On 11/05/2010 05:23 AM, SK wrote: > On Thu, Nov 4, 2010 at 6:09 PM, Alan W. Irwin <ir...@beluga.phys.uvic.ca> > wrote: >> then the custom make command >> should always be run (since it has no DEPENDS option), > > Alan, you are absolutely right!! I missed this since the external > makefile I need actually does have a dependency to create the makefile > itself. So, the custom command only ran when the single explicit > dependency was out of date. I can solve that some other way and I > appreciate all your effort to straighten this out. I wish the > document would have explicitly stated that the command always runs > without a dependency, though that is the intuitive course of action.
AFAIK, a custom command without dependencies doesn't run if its OUTPUT exists; see the following CMakeLists.txt and the generated Makefiles: CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR) PROJECT(INDEPENDCUSTOMCOMMAND C) ADD_CUSTOM_COMMAND( OUTPUT ${CMAKE_BINARY_DIR}/main.h COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_BINARY_DIR}/main.h) FILE(WRITE ${CMAKE_BINARY_DIR}/main.c " #include \"main.h\" int main(void){return 0;} ") ADD_EXECUTABLE(main main.c main.h) The sole possibility to (re)run the custom command is to delete main.h; if main.h exists the command never runs. You might even have a foreign main.h: Try "cmake <path/to/source>" followed by "touch main.h" from within an empty build directory, and you won't see the custom command run. In ${CMAKE_BINARY_DIR}/CMakeFiles/main.dir/build.make, the related lines are: main.h: ... .../cmake -E touch .../main.h So, the commands associated with make's "main.h" target aren't executed if make detects that main.h is already present. Thus, a dependency-less custom command doesn't run each time; rather, it runs only if its output doesn't exist. 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