[CMake] avoid rebuilding targets depending on generated source files

Hendrik Sattler post at hendrik-sattler.de
Sat Mar 3 16:20:11 EST 2012


Am Samstag, 3. März 2012, 21:41:49 schrieb Ajay Panyala:
> I have a custom target which runs a command to generate
> a C source file say test1.c
> 
> ADD_CUSTOM_TARGET(TestGen ALL
> COMMAND genExec ${PROJECT_SOURCE_DIR}/Main.java
> DEPENDS ${PROJECT_SOURCE_DIR}/Main.java
> )
> 
> And I have a custom command that moves the generated *test1.c *
> to a new directory inside the build directory.
> 
> ADD_CUSTOM_COMMAND(
> TARGET TestGen
> POST_BUILD
> COMMAND mv
> ARGS ${PROJECT_BINARY_DIR}/test1.c ${PROJECT_BINARY_DIR}/tests/
> )
> 
> Each time I run make, the custom target is run (since custom targets are
> always
> out-of-date). But I want to avoid moving the new test1.c generated each
> time if build/test1.c is the same as build/tests/test1.c since there are
> other targets
> like add_executable and add_library later in the CMakelists file that are
>  re-built
> each time since they depend on test1.c

Try "cmake -E copy_if_different ..."

HS


More information about the CMake mailing list