[CMake] Bug in IMPLICIT_DEPENDS for add_custom_target
lists_ravi at lavabit.com
lists_ravi at lavabit.com
Wed Nov 18 17:51:33 EST 2009
> 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 )
For the benefit of the archives, the solution was to provide a fully
qualified path name for the implicit dependency, like so:
cmake_minimum_required( VERSION 2.6.4 )
add_custom_command( OUTPUT drop
COMMAND touch drop
IMPLICIT_DEPENDS CXX ${CMAKE_CURRENT_SOURCE_DIR}/dummy.cc )
add_custom_target( dropper ALL DEPENDS drop )
Regards,
Ravi
More information about the CMake
mailing list