[CMake] ADD_CUSTOM_COMMAND() without anything else: dangling dependency?

Alexander Neundorf a.neundorf-work at gmx.net
Sun Mar 14 08:25:14 EDT 2010


On Sunday 14 March 2010, joerg.faschingbauer at aon.at wrote:
> Hi,
>
> I use ADD_CUSTOM_COMMAND() to generate a header file in one directory.
> That header file is included from a source file in another directory,
> which is then aggregated into a library. The dependency is stated via
> an OBJECT_DEPENDS property. Like,
>
> in one directory 'generated-headers',
>
>     ADD_CUSTOM_COMMAND(
>         OUTPUT generated-header.h
>         COMMAND touch generated-header.h
>         )
>
> and, in the library directory,
>
>     INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}/generated-headers)
>     ADD_LIBRARY(
>         library
>         library.c
>     )
>     SET_PROPERTY(
>         SOURCE library.c
>         PROPERTY OBJECT_DEPENDS
> ${CMAKE_BINARY_DIR}/generated-headers/generated-header.h)
>
> CMake doesn't seem to generate any targets for the generated-headers
> directory, resulting in
>
> Scanning dependencies of target library
> make[2]: *** No rule to make target `generated-headers/generated-header.h',
> needed by `library/CMakeFiles/library.dir/library.c.o'.  Stop.
>
> What am I doing wrong?

The dependencies for generated files from add_custom_command() work only in 
that directory itself, AFAIK.
If you depend on the generated header in some other directory you have to do 
something else.
E.g. depend on a library which depends on this generated header or create a 
custom target in the director which depends on the generated header and then 
depend on this custom target.

Alex


More information about the CMake mailing list