[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cmake
Subject:    Re: [CMake] Problem with generated source and header files
From:       Tyler Roscoe <tyler () cryptio ! net>
Date:       2009-06-30 17:05:55
Message-ID: 20090630170555.GA18662 () cryptio ! net
[Download RAW message or body]

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic