On 2009-11-10 17:34-0500 lists_r...@lavabit.com wrote:
Hello, How does one ensure that the appropriate scanner is run to obtain implicit dependencies via IMPLICIT_DEPENDS? In the following example, the 'drop' target depends on dummy.cc which has an implicit dependency on blah.h, which means that 'drop' should be rebuilt after every change to blah.h. However, with CMake 2.6.4 (rpm from Fedora 11) and 2.8.0-rc6 (self-compiled), the 'drop' target is never remade when blah.h is modified. Is this a bug? blah.h: inline int blah() { return 3; } dummy.cc: #include <iostream> #include "blah.h" void tester() { std::cout << blah() << std::endl; } CMakeLists.txt: cmake_minimum_required( VERSION 2.6.4 ) add_custom_command( OUTPUT drop COMMAND touch drop IMPLICIT_DEPENDS CXX dummy.cc ) add_custom_target( dropper ALL DEPENDS drop ) Of course, the preceding is a very simplified example to show the issue. My real use case is much more complex than a mere 'touch', involving some complex pre-processing on some C++ source code. Any hints greatly appreciated. I am using the standard Unix makefiles generator. The build.make file in CMakeFiles/dropper.dir has no indication that blah.h is even involved in this compilation.
I am in the habit of always using full paths for DEPENDS and OUTPUT, e.g., ${CMAKE_CURRENT_BINARY_DIR}/drop I am not sure that is necessary, but it is worth a try in this case. Also, use "make VERBOSE=1 dropper" to make sure "touch ${CMAKE_CURRENT_BINARY_DIR}/drop" is actually being executed as expected (or not). Hope these ideas help with the add_custom_command and add_custom_target basics as I know them. I have no experience with IMPLICIT_DEPENDS but I am hoping that if the basics are right it will work for you. Alan __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); PLplot scientific plotting software package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ _______________________________________________ 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