[CMake] build step is not thread-safe for CMake

hex hex7c3 at gmail.com
Mon Feb 10 07:49:05 EST 2020


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20200210/fd8b2b5c/attachment.html>


More information about the CMake mailing list