[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