On Tue, Jun 30, 2009 at 06:53:07PM +0200, Jörg Förstner wrote:
> The generator now is called EVERY TIME I run make, because
> - I need two separate CMakeLists.txt files now,
> - I have to make a custom target, otherwise CMake does not know 
> "everything.cpp" and quits with an error.
> - the custom target is ALWAYS considered out-of-date.
> 
> --- File1: generator/CMakeLists.txt ---
> ADD_CUSTOM_COMMAND(
>   OUTPUT  everything.cpp
>   COMMAND generator.rb --output everything.cpp
>   VERBATIM
> )
> ADD_CUSTOM_TARGET( generate_it DEPENDS everything.cpp )
> ---------------------------------
> 
> --- File2: libxyz.so/CMakeLists.txt ---
> # Define a target shared object library
> ADD_LIBRARY( xyz.generated SHARED everything.cpp )
> 
> # Let CMake know that everything.cpp is a generated file
> SET_SOURCE_FILES_PROPERTIES( everything.cpp PROPERTIES GENERATED TRUE )
> 
> # Add dependencies between the library here and the custom target
> # from the other CMakeLists.txt file
> ADD_DEPENDENCIES( xyz.generated generate_it )
> 
> # Additional libraries to be linked to the target
> TARGET_LINK_LIBRARIES(
>   xyz.generated
>   lib1
>   lib2
>   ...
> )
> ---------------------------------
> 
> How can I have a custom target which is NOT built every time I call 'make'?

I think adding some appropriate DEPENDS to your custom_command should
help.

> How can I use a target from another directory, which is only build if it's 
> necessary?

add_subdirectory() and maybe appropriate add_dependencies().

tyler
_______________________________________________
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

Reply via email to