On Mon, 2020-02-10 at 12:49 +0000, hex wrote: > hello, > > My build step is not thread-safe (the instruction in the COMMAND > part). Every build step depends on one source file: > > add_custom_command( > DEPENDS on_source.file > OUTPUT > object_file_for_source_file > COMMAND not-thread-safe-compiler --build on_source.file > COMMENT > "Building Source object" > ) > > add_custom_target DEPENDS on OUTPUT from all custom command's, but in > order to prevent parallel execution when cmake is called: > > cmake --build . --target all -j30 > > I need to build each step in any order, but still not as a dependency > as this would trigger unnecessary recompilation. Using > MAIN_DEPENDENCY defines hierarchical dependency, but this won't help > in this situation. > > I cannot figure out how to prevent parallel execution of COMMAND in > CMake. The only option I see is a single command > > add_custom_target(tgt > DEPENDS on_all_source.files > COMMAND not-thread-safe-compiler --build on_source1.file > COMMAND not-thread-safe-compiler --build on_source2.file > COMMAND not-thread-safe-compiler --build on_source3.file > . . . > COMMENT > "Building target" > ) > > this would rebuild every source, though. > > How do I set this up? > > thank you
It sounds like you want order-only dependencies: dependencies the command waits for before building, but whose changes do not actually trigger a rebuild. As far as I know, add_custom_command() doesn't have support for this - perhaps it could be added. This mailing list is deprecated. Please move further discussion to the Discourse forum: https://discourse.cmake.org/c/code/11 Kyle -- Powered by kitware.com/cmake Kitware offers various services to support the CMake community. For more information on each offering, please visit https://cmake.org/services Visit other Kitware open-source projects at https://www.kitware.com/platforms Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake This mailing list is deprecated in favor of https://discourse.cmake.org