Jon Schewe wrote:
I recently started using cmake and find it generally to be a nice tool,
however I'm rather frustrated with it now. Can someone please tell me
how to get cmake to conditionally create a file as part of executing a
target? What I want to do looks like this, but apparently
add_custom_command only can execute shell scripts, so I'm not sure how
one can use these nice commands for writing files.

custom command can run any program you want?? You can even run cmake -P and run a cmake script.
FUNCTION(build_includes)
  FILE(WRITE unit_test_includes.hpp "// Autogenerated - do not edit\n")
  FOREACH(test ${TESTS})
    FILE(APPEND unit_test_includes.hpp "#include \"${test}\"\n")
  ENDFOREACH(test)
ENDFUNCTION(build_includes)

Put that in a file mycmake.cmake

ADD_CUSTOM_COMMAND(OUTPUT unit_test_includes.hpp
                           COMMAND build_includes
                                     DEPENDS ${TESTS}
                                     COMMENT "Building
unit_test_includes.hpp"
                                     )

Run ${CMAKE_COMMAND} -P mycmake.cmake as the COMMAND for your custom command.


And then unit_test_includes.cpp is included in one of my hand written
cpp files that is used to build the target.

Of course what doesn't work is the COMMAND of ADD_CUSTOM_COMMAND. How
does one do this with cmake? I'd rather not write the shell script to do
this because then it won't work on Windows systems.

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to