On 2013-10-15 11:49, Johannes Zarl wrote:
I'd like to make some code in my build system dependent on the existance of a
target. Basically I'd like to write something like this:

if(TARGET optional_lib)
   add_library(bar ${bar_srcs})
   target_link_library(bar optional_lib)
endif()

The problem I have is that for a couple of reasons the CMakelists file for bar
needs to be read before optional_lib. Therefore the "TARGET optional_lib" test
fails even though I can link bar successfully against optional_lib.

If you *REALLY* need to know about all your targets before you decide on linking, then you're going to have to implement multi-pass project parsing. This is possible - see e.g. VTK - but makes the configuration process much more difficult to follow, can lead to serious maintenance issues, etc. The less magic involved in your build system, the better.

Personally, I'd say this smells like poor design that needs to be rethought. Maybe what you really want is a plugin system?

--
Matthew

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to