Howdy, I'm looking to add a dependency to all source files to ensure that a generated file is up-to-date before compilation. This generated file is "passed in" to the compiler via a global compiler definition. Is there an easy or built-in way to do this, or will I need to manually add a made-up target to every file in every library directory?
Currently, the generated file is created in the CMake Options file, using an exec_program command near the top of the file. The output of this process is not tracked, but the GLOBAL_DEFS variable applied to every source file includes a line that directs the compiler to consume the new file. It looks a little like this: Lib_options.cmake [...] exec_program( <executable> ARGS -o <outputFile> -I <inputFile> -x <extraArgs...> ) [...] set (GLOBAL_DEFS -D<definitions...> -@<outputFile> ) [...] However, the dependency tree is not aware of this file and will not prepare it in any way on a per-file bases. In this case the program is executed every build regardless of if <inputFile> has been modified. This adds unnecessary time to an incremental build if no change is made, and if <inputFile> does happen to change CMake will not recompile the sources accordingly. I have to do a clean/rebuild in order for the changes to "take". What I would like to see is a way to actually add <outputFile> as a dependency to each source file. Now, I'm no CMake expert, but I think it would look something like this: Lib_options.cmake [...] # Create a command/target for our output file add_custom_command( OUTPUT <outputFile> DEPENDS <inputFile> COMMAND <executable> ARGS -o <outputFile> -I <inputFile> -x <extraArgs...> ) # Do something to make all source files depend on <outputFile> # <Magic goes here> [...] set (GLOBAL_DEFS -D<definitions...> -@<outputFile> ) [...] Would this be a feasible thing to do in CMake, especially at the options file level? If you need any more information please let me know. Thank you in advance!
-- 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: https://cmake.org/mailman/listinfo/cmake