Re: [CMake] Building ROOT into Geant4 Application
Mr. Odera, On Wed, Dec 6, 2017 at 2:40 PM, Dim, Odera Uwrote: > Hi CMake Experts, > > > Please I use CMake to build my Geant4 applications with no issues. However, > recently I needed to build ROOT into my Geant4 application for the purpose > of extracting and processing simulation data. I have followed the many > instructions which exist online both on the Genat4 and ROOT sides but none > seems to produce the required results. The issue i'm having I believe is > related to the linkage of both Geant4 and ROOT libraries top the generated > executable during compilation. I am able to configure and generate build > files with a CMakeLists with no errors. Compilation also seems to also > complete with no errors but when I run the application I get an error which > specifies that LLVM are exposed to Cling and so I need to hide them. In my > CMakeLists (which I can provide to you) I do not explicitly link Cling to my > executable all I do is link the executable to ROOT libraries > (${ROOT_LIBRARIES}). Please, could you help me with this issue or do you > know a way that I could link libraries and not expose LLVM to Cling? Thank > you. > Can you provide the text of the errors as they are given? Are you experiencing build errors, or are you wanting to quiet runtime messages? Which OS are you compiling and running on? Which build instructions are you following? What are the build commands that you ran? Are you using Clang, and is it necessary that you use Clang? If we can't resolve your problem here it is possible I can refer you to someone off-list, but I am not entirely sure what difficulty you are having. Cheers, R0b0t1 -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake
[Cmake-commits] CMake branch, master, updated. v3.10.0-548-gf5e48ed
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via f5e48edaae37fbf9afa668671b3a8d3e5537321b (commit) from 92910e282adedff8c2dba488db84fb917318bb5b (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log - https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f5e48edaae37fbf9afa668671b3a8d3e5537321b commit f5e48edaae37fbf9afa668671b3a8d3e5537321b Author: Kitware Robot <kwro...@kitware.com> AuthorDate: Thu Dec 7 00:01:14 2017 -0500 Commit: Kitware Robot <kwro...@kitware.com> CommitDate: Thu Dec 7 00:01:14 2017 -0500 CMake Nightly Date Stamp diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index bb18741..ae3bb06 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,5 +1,5 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 10) -set(CMake_VERSION_PATCH 20171206) +set(CMake_VERSION_PATCH 20171207) #set(CMake_VERSION_RC 1) --- Summary of changes: Source/CMakeVersion.cmake |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- CMake ___ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits
[CMake] Building ROOT into Geant4 Application
Hi CMake Experts, Please I use CMake to build my Geant4 applications with no issues. However, recently I needed to build ROOT into my Geant4 application for the purpose of extracting and processing simulation data. I have followed the many instructions which exist online both on the Genat4 and ROOT sides but none seems to produce the required results. The issue i'm having I believe is related to the linkage of both Geant4 and ROOT libraries top the generated executable during compilation. I am able to configure and generate build files with a CMakeLists with no errors. Compilation also seems to also complete with no errors but when I run the application I get an error which specifies that LLVM are exposed to Cling and so I need to hide them. In my CMakeLists (which I can provide to you) I do not explicitly link Cling to my executable all I do is link the executable to ROOT libraries (${ROOT_LIBRARIES}). Please, could you help me with this issue or do you know a way that I could link libraries and not expose LLVM to Cling? Thank you. Dim Odera UMass Lowell -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake
[CMake] CMake 3.10 adding mystery source file to target?
I just tried to configure our project with CMake 3.10 and got some errors. The same project configures fine with CMake 3.8.x and 3.9.x as evidenced here (http://my.cdash.org/index.php?project=DREAM3D). I get an error about a Qt5 qrc generated file not being found. -- Configuring done CMake Error in /Users/mjackson/Workspace/DREAM3D_Plugins/AskNDEToolbox/Applications/ScanViewer/CMakeLists.txt: Cannot find source file: /Users/mjackson/Workspace/DREAM3D-Build/3.10/Plugins/AskNDEToolbox/qrc_AskNDEToolbox.cpp Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp .hxx .in .txx -- Generating done -- Build files have been written to: /Users/mjackson/Workspace/DREAM3D-Build/3.10 But the issue is that if I actually print out all the source files for the " ScanViewer " taget, "qrc_AskNDEToolbox.cpp" NEVER shows up? There is another target that uses that file but NOT ScanViewer. I am also getting some errors on the same project but on Windows (the previous was on macOS Sierra) where some of our plugins that get configured all of a sudden cannot find some of their files. I have not tried on Linux x64 yet to figure out if anything is broken on that side. Thanks for any information anyone may have. Thoughts. Ideas. All are welcome. -- Michael Jackson | Owner, President BlueQuartz Software [e] mike.jack...@bluequartz.net [w] www.bluequartz.net -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake
Re: [CMake] [CMAKE] - custom compiler for Android
HI Brad, Thank you for the response However we want more guidance on how do we start with the changes needed for the compiler support To be more clear, we are trying to build support for the embarcadero compilers bccaarm.exe. To give more insight on the work and our query, we have attached a working toolchain that we created and works fine with CMAKE and the compiler. But we have given the system name CMAKE_SYSTEM_NAME as "_Android" Since we havent given it as "Android", it reads all the libraries and the compilers from our toolchain file and gives the desired output. Can you please give us some guidance to achieve the same with CMAKE_SYSTEM_NAME as "Android" Thanks & Regards, Ramya -Original Message- From: Brad King [mailto:brad.k...@kitware.com] Sent: Wednesday, December 06, 2017 1:24 AM To: ramya.gopalkris...@accoliteindia.com Cc: CMake@cmake.org; 'Sumit Chourasia'Subject: Re: [CMAKE] - custom compiler for Android On 12/05/2017 12:05 PM, ramya.gopalkris...@accoliteindia.com wrote: > Please validate our current understanding when a toolchain file or > command-line option sets CMAKE_SYSTEM_NAME to "Android" You may find this note helpful: https://gitlab.kitware.com/cmake/cmake/issues/16708#note_300971 > Ideally, we want our toolchain file to tell cmake the libraries to > include/link and the compilers to use. Toolchain files can set the path to compilers on the host, but target-platform-wide information like the set of libraries and include directories to use typically belongs in platform information modules (e.g. `Platform/Android-...` and the like). > But once, System has been determined as android, cmake goes through > the above sequence of events and expects toolchains to be specified > for either clang, gcc or llvm compilers. We try to support the compilers that come with the NDK out of the box. More work may be needed to support other compilers, just as would be the case for any new platform or new compiler. > Determine-Compiler-NDK.cmake - We would need to add support for an > "NewCompiler Toolchain" which would contain android libraries and compilers. Since your compiler doesn't come with the NDK, perhaps you could look at using the standalone toolchain mode. > New Android-{NewCompiler}-C.cmake, Android-{ NewCompiler }-CXX.cmake, > Android-{ NewCompiler }.cmake and another appropriate toolchain file > to set target architecture and compiler flags. If you have some new compiler then something like that would be needed. This would be the case for a new compiler on any platform. -Brad bccaarm.cmake Description: Binary data -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake
[Cmake-commits] CMake branch, master, updated. v3.10.0-547-g92910e2
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 92910e282adedff8c2dba488db84fb917318bb5b (commit) via dd792b08b50d17ea4d3ff5ba17bec45550a8ed16 (commit) via 060cf73ec8c2d5d73d698b1ff547d425d8ec7eb3 (commit) via 6ecd8b601b6c09d1f07bf5b2ae0cec694522d2c7 (commit) via 9432f686e62082045f53bd0ec8f8911966476df1 (commit) via 0418e91f7d77e540b1e7accc9af4d6cd28b2e71f (commit) via 64184762f4daa69785592d890a7caf7dbb498817 (commit) from 98206571fb68881fe373c040ae703aac318fe6d7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log - https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=92910e282adedff8c2dba488db84fb917318bb5b commit 92910e282adedff8c2dba488db84fb917318bb5b Merge: dd792b0 0418e91 Author: Brad KingAuthorDate: Wed Dec 6 08:07:37 2017 -0500 Commit: Brad King CommitDate: Wed Dec 6 08:07:37 2017 -0500 Merge branch 'release-3.10' https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=dd792b08b50d17ea4d3ff5ba17bec45550a8ed16 commit dd792b08b50d17ea4d3ff5ba17bec45550a8ed16 Merge: 060cf73 6ecd8b6 Author: Brad King AuthorDate: Wed Dec 6 13:06:30 2017 + Commit: Kitware Robot CommitDate: Wed Dec 6 08:06:33 2017 -0500 Merge topic 'doc-lang-order' 6ecd8b60 Help: Document that ASM should be enabled last Acked-by: Kitware Robot Merge-request: !1560 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=060cf73ec8c2d5d73d698b1ff547d425d8ec7eb3 commit 060cf73ec8c2d5d73d698b1ff547d425d8ec7eb3 Merge: 9820657 9432f68 Author: Brad King AuthorDate: Wed Dec 6 13:05:25 2017 + Commit: Kitware Robot CommitDate: Wed Dec 6 08:05:31 2017 -0500 Merge topic 'src-COMPILE_DEFINITIONS-genex' 9432f686 Add generator expression support to per-source COMPILE_DEFINITIONS Acked-by: Kitware Robot Merge-request: !1546 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6ecd8b601b6c09d1f07bf5b2ae0cec694522d2c7 commit 6ecd8b601b6c09d1f07bf5b2ae0cec694522d2c7 Author: Brad King AuthorDate: Wed Dec 6 06:48:06 2017 -0500 Commit: Brad King CommitDate: Wed Dec 6 06:48:06 2017 -0500 Help: Document that ASM should be enabled last ASM should be enabled after C and/or CXX because we consider the compilers for those languages as possible assemblers. Issue: #17532 diff --git a/Help/command/enable_language.rst b/Help/command/enable_language.rst index 871ac4e..61dfc03 100644 --- a/Help/command/enable_language.rst +++ b/Help/command/enable_language.rst @@ -10,7 +10,10 @@ Enable a language (CXX/C/Fortran/etc) This command enables support for the named language in CMake. This is the same as the project command but does not create any of the extra variables that are created by the project command. Example languages -are CXX, C, Fortran. +are ``CXX``, ``C``, ``CUDA``, ``Fortran``, and ``ASM``. + +If enabling ``ASM``, enable it last so that CMake can check whether +compilers for other languages like ``C`` work for assembly too. This command must be called in file scope, not in a function call. Furthermore, it must be called in the highest directory common to all diff --git a/Help/command/project.rst b/Help/command/project.rst index 139f69c..eb185e4 100644 --- a/Help/command/project.rst +++ b/Help/command/project.rst @@ -46,11 +46,15 @@ variable will be set to its argument. The argument must be a string with short description of the project (only a few words). Optionally you can specify which languages your project supports. -Example languages are ``C``, ``CXX`` (i.e. C++), ``Fortran``, etc. +Example languages include ``C``, ``CXX`` (i.e. C++), ``CUDA``, +``Fortran``, and ``ASM``. By default ``C`` and ``CXX`` are enabled if no language options are given. Specify language ``NONE``, or use the ``LANGUAGES`` keyword and list no languages, to skip enabling any languages. +If enabling ``ASM``, list it last so that CMake can check whether +compilers for other languages like ``C`` work for assembly too. + If a variable exists called :variable:`CMAKE_PROJECT__INCLUDE`, the file pointed to by that variable will be included as the last step of the project command. https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9432f686e62082045f53bd0ec8f8911966476df1 commit 9432f686e62082045f53bd0ec8f8911966476df1 Author: Marc Chevrier AuthorDate: Thu Nov 30 15:06:21 2017 +0100 Commit:
[Cmake-commits] CMake branch, release, updated. v3.10.0-14-g0418e91
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, release has been updated via 0418e91f7d77e540b1e7accc9af4d6cd28b2e71f (commit) via 64184762f4daa69785592d890a7caf7dbb498817 (commit) via 2047eb360de5a9d2a8cac6a689bd7846c5a0128f (commit) via bde7513d2fcd7a366eb4dd93fc1f061334743bb7 (commit) from 64713d4ca0ae864958ecdeaee9642488c3f2cbc7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log - --- Summary of changes: Modules/FindMPI.cmake | 28 +--- 1 file changed, 17 insertions(+), 11 deletions(-) hooks/post-receive -- CMake ___ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits
[Cmake-commits] CMake branch, master, updated. v3.10.0-540-g9820657
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMake". The branch, master has been updated via 98206571fb68881fe373c040ae703aac318fe6d7 (commit) via 22f440ae6930c8ef9eccfa65530c6b59949657ef (commit) via b6dd3969e819a7a2508c8f705ef7e13fb7e11dff (commit) via 79b241dee076d594f5527a148142c0c15a5909dc (commit) via 4a8bbc520aa62187fb70aaf0c28daa67e275c26e (commit) via 52a5c4a877d066a283e76bd5b6e63a9f3eec31ea (commit) via 2047eb360de5a9d2a8cac6a689bd7846c5a0128f (commit) via bde7513d2fcd7a366eb4dd93fc1f061334743bb7 (commit) from a442624def318c950936c8d49964c4b3bfb0487d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log - https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=98206571fb68881fe373c040ae703aac318fe6d7 commit 98206571fb68881fe373c040ae703aac318fe6d7 Merge: 22f440a 79b241d Author: Brad KingAuthorDate: Wed Dec 6 13:00:48 2017 + Commit: Kitware Robot CommitDate: Wed Dec 6 08:01:20 2017 -0500 Merge topic 'update-kwsys' 79b241de cmake-gui: Update RegexExplorer for changes to KWSys 4a8bbc52 Merge branch 'upstream-KWSys' into update-kwsys 52a5c4a8 KWSys 2017-12-05 (9376537e) Acked-by: Kitware Robot Merge-request: !1558 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=22f440ae6930c8ef9eccfa65530c6b59949657ef commit 22f440ae6930c8ef9eccfa65530c6b59949657ef Merge: b6dd396 bde7513 Author: Brad King AuthorDate: Wed Dec 6 13:00:12 2017 + Commit: Kitware Robot CommitDate: Wed Dec 6 08:00:46 2017 -0500 Merge topic 'findmpi-notfound-spam' bde7513d FindMPI: Correct legacy variable handling Acked-by: Kitware Robot Merge-request: !1557 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b6dd3969e819a7a2508c8f705ef7e13fb7e11dff commit b6dd3969e819a7a2508c8f705ef7e13fb7e11dff Merge: a442624 2047eb3 Author: Brad King AuthorDate: Wed Dec 6 13:00:01 2017 + Commit: Kitware Robot CommitDate: Wed Dec 6 08:00:07 2017 -0500 Merge topic 'findmpi-found-cond' 2047eb36 FindMPI: Fix multiple configure runs Acked-by: Kitware Robot Merge-request: !1556 https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=79b241dee076d594f5527a148142c0c15a5909dc commit 79b241dee076d594f5527a148142c0c15a5909dc Author: Brad King AuthorDate: Tue Dec 5 11:32:08 2017 -0500 Commit: Brad King CommitDate: Tue Dec 5 11:32:08 2017 -0500 cmake-gui: Update RegexExplorer for changes to KWSys diff --git a/Source/QtDialog/RegexExplorer.cxx b/Source/QtDialog/RegexExplorer.cxx index abed70e..cb67f85 100644 --- a/Source/QtDialog/RegexExplorer.cxx +++ b/Source/QtDialog/RegexExplorer.cxx @@ -8,7 +8,7 @@ RegexExplorer::RegexExplorer(QWidget* p) { this->setupUi(this); - for (int i = 1; i < cmsys::RegularExpression::NSUBEXP; ++i) { + for (int i = 1; i < cmsys::RegularExpressionMatch::NSUBEXP; ++i) { matchNumber->addItem(QString("Match %1").arg(QString::number(i)), QVariant(i)); } @@ -105,7 +105,7 @@ void RegexExplorer::on_matchNumber_currentIndexChanged(int index) QVariant itemData = matchNumber->itemData(index); int idx = itemData.toInt(); - if (idx < 1 || idx >= cmsys::RegularExpression::NSUBEXP) { + if (idx < 1 || idx >= cmsys::RegularExpressionMatch::NSUBEXP) { return; } https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4a8bbc520aa62187fb70aaf0c28daa67e275c26e commit 4a8bbc520aa62187fb70aaf0c28daa67e275c26e Merge: d06b826 52a5c4a Author: Brad King AuthorDate: Tue Dec 5 11:31:27 2017 -0500 Commit: Brad King CommitDate: Tue Dec 5 11:31:27 2017 -0500 Merge branch 'upstream-KWSys' into update-kwsys * upstream-KWSys: KWSys 2017-12-05 (9376537e) https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=52a5c4a877d066a283e76bd5b6e63a9f3eec31ea commit 52a5c4a877d066a283e76bd5b6e63a9f3eec31ea Author: KWSys Upstream AuthorDate: Tue Dec 5 11:30:36 2017 -0500 Commit: Brad King CommitDate: Tue Dec 5 11:31:27 2017 -0500 KWSys 2017-12-05 (9376537e) Code extracted from: https://gitlab.kitware.com/utils/kwsys.git at commit 9376537ec0e4770a28f4b1705cfacf79650f71b6 (master). Upstream Shortlog - Brad King (1): e9557f37 RegularExpression: Fix regression in 'find' method
[cmake-developers] For add_custom_command and add_custom_target does each COMMAND completely finish before the next COMMAND starts?
I asked the question in the subject line because I have been obtaining some peculiar modification times to files. The add_custom_command documentation states: COMMAND Specify the command-line(s) to execute at build time. If more than one COMMAND is specified they will be executed in order, but not necessarily composed into a stateful shell or batch script. And the add_custom_target documentation says the same thing about its COMMANDs. The phrase "executed in order" is ambiguous because it could mean either started execution in order with no waits until completion until the next COMMAND is started or each COMMAND started and completely finished in order. I am pretty sure what is meant is the last meaning in which case it would be good to change the above from they will be executed in order ==> they will be executed to completion in order to be absolutely clear on this point. And a similar change would need to be made to the add_custom_target documentation. I always assumed the "executed to completion" scenario until today when I ran into the following "interesting" Linux file modification time evidence to the contrary (for 3.6.2 if that makes any difference). For this example, I created in a given add_custom_command (for the ephcom software) the following sequential COMMANDs COMMAND $ ${binary_ephemeris_full_path} EPHEMERIS_header_ascii EPHEMERIS_data_ascii > ${CMAKE_BINARY_DIR}/${binary_results_dir}/${dir}/identity_eph2asc.out 2>&1 COMMAND $ EPHEMERIS_header_ascii EPHEMERIS_data_ascii RECREATED_BINARY_EPHEMERIS > ${CMAKE_BINARY_DIR}/${binary_results_dir}/${dir}/identity_asc2eph.out 2>&1 and yet for the files generated with "make -j4" the modification times are (from the Linux "ls -lth --full-time" command) -rw-r--r-- 1 software software0 2017-12-04 19:34:56.765613972 -0800 identity_eph2asc.out -rw-r--r-- 1 software software 7.6K 2017-12-04 19:34:56.741614353 -0800 identity_asc2eph.out -rw-r--r-- 1 software software 136M 2017-12-04 19:34:56.721614671 -0800 EPHEMERIS_data_ascii -rw-r--r-- 1 software software 41M 2017-12-04 19:34:56.697615052 -0800 RECREATED_BINARY_EPHEMERIS -rw-r--r-- 1 software software 7.4K 2017-12-04 19:34:47.097767483 -0800 EPHEMERIS_header_ascii [...] -rw-r--r-- 1 software software 41M 2017-12-04 19:25:57.974135445 -0800 JPLEPH where JPLEPH is the same as ${binary_ephemeris_full_path} above, and the first 5 files are output from the above two COMMANDs. The puzzling thing is these modification times naively imply the second command finished slightly before (!) the first command which should lead to completely bogus results since the second command depends on the EPHEMERIS_header_ascii and EPHEMERIS_data_ascii files generated by the first command. However, it turns out the results are perfect as expected, i.e., RECREATED_BINARY_EPHEMERIS is exactly identical to the starting ${binary_ephemeris_full_path} = JPLEPH in the same directory verifying the eph2asc and asc2eph commands are working perfectly for this particular set of ephemeris data. Because of these perfect results I believe what is going on for this interesting case is that these modification times are simply showing Linux kernel optimization at work rather than the actual order of command execution. According to this hypothesis, the first command completely finishes before the second command starts. But at that time each of the EPHEMERIS_header_ascii, EPHEMERIS_data_ascii, and identity_eph2asc.out files generated by the first command are handed off to the Linux kernel for disposition. And then the optimization fun begins. It makes sense that the kernel would keep at least the first two core resident until the second command finishes with them. And eventually all 5 file output results are flushed to disk (with modification times written at flush time) when both eph2asc and asc2eph are done with them. This hypothesis does not explain why identity_eph2asc.out is not immediately flushed by the Linux kernel when that first task is done, but my guess is the kernel assigns the lowest priority to flushing small (i.e., zero-length in this case) files which is why this file is the last to be flushed to disk. Also, I just checked and asc2eph opens EPHEMERIS_header_ascii, reads it, and closes it right at the start of its execution and then opens EPHEMERIS_data_ascii, and reads it through the rest of a much longer execution time which explains why the Linux kernel took advantage of that chance to flush EPHEMERIS_header_ascii so much earlier than EPHEMERIS_data_ascii. I would love to get some confirmation that I can absolutely rely on COMMANDs being executed sequentially with each finishing (and handing off their generated files to the kernel at that time for disposition) before the next one is allowed to start. And I hope I have convinced the CMake developers that the above slight change in documentation would be worthwhile to clarify this point. I would also appreciate