On 04/14/2011 12:44 PM, J.S. van Bethlehem wrote: > Dear users, > > As a new user CMake I've come across some things I don't fully > understand yet. Here is such a thing: > when I build documentation, I want to run some files from a 'demo' > subdirectory and create output - suppose the (binary) file is called > 'func1_demo', then in my old Makefiles I used to do: > ./func1_demo >& func1_demo.out > I implemented this in CMake using a special 'RunCommand.cmake' script > that does: > execute_process(COMMAND ${dbin} OUTPUT_FILE ${dbin_out} ERROR_FILE > ${dbin_out}) > and the CMakeLists.txt file that creates the demos, has > ${CMAKE_COMMAND} -Ddbin="./${demo_name}" -Ddbin_out="${demo_name}.out" > -P RunCommand.cmake > as the COMMAND part of an add_custom_command. It seems a bit contrived, > having to pass these variables through the command line to a separate > file. Is there a better way to do this?
You might incorporate the variables in your script; e.g., provide a RunCommand.cmake.in template which contains the following lines EXECUTE_PROCESS( COMMAND @dbin@ OUTPUT_FILE @dbin_out@ ERROR_FILE @dbin_out@ ) and use CONFIGURE_FILE(RunCommand.cmake.in RunCommand.cmake @ONLY) to generate the actual script to be used. However, the "variables" won't be variable anymore, and the script will be useful for one case only. Alternatively, you might rely on environment variables in your script EXECUTE_PROCESS( COMMAND $ENV{dbin} OUTPUT_FILE $ENV{dbin_out} ERROR_FILE $ENV{dbin_out} ) but these must be defined when the custom command is run. In the end, your initial approach with -Dvar=val is reliable and flexible and to be preferred, IMO, although it's possibly not the most aesthetic one. BTW, does a direct approach like ADD_CUSTOM_COMMAND(OUTPUT... COMMAND ${demo_name} >& ${demo_name}.out) work for you? If so, note that it's not really portable due to the ">&". Regards, Michael _______________________________________________ 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