Hi Philip, Thanks for your reply. Your solution is ok, but it looks a bit like a workaround for a feature that is missing, but was once there: link_libraries().
To me, it's not really clear why link_libraries() has been deprecated and, for example, include_directories() has not. IMHO, using target_link_libraries() for a general library has a too fine granularity. Suppose include_directories() were deprecated as well in favour of, say, target_include_directories(). That would create the same problem: carry around variables holding a bunch of include directories that must be supplied to each target. I don't like to use deprecated features, so I would love to see the deprecation of link_libraries() to be reverted. But maybe I'm missing a good reason for not doing so. Best regards, Marcel Loose. On Wed, 2009-04-01 at 23:50 -0400, Philip Lowman wrote: > On Wed, Apr 1, 2009 at 5:35 PM, Marcel Loose <[email protected]> wrote: > Hi all, > > I was wondering why the link_libraries() command has been > deprecated. Commands like include_directories() and > link_directories() which have the same "scope" have not been > deprecated. I think that link_libraries() has its virtues too. > > My reason for asking this, is that I wonder what's the proper > way to add a library to *all* targets in a project; for > example, a logging library or a threads library. Here, > link_libraries() provides IMHO a much cleaner solution, than > target_link_libraries(). The latter requires me to keep track > of the globally used library in a variable that must be passed > around; and for each target I must explicitly specify its > dependency on this library by using target_link_libraries(). > > Or, am I missing something, and is there a cleaner way to do > this, without using a deprecated feature? > > Often I have seen people write functions to help with this especially > if you have more than one common library. > > function(link_target_against_common_libs _target) > target_link_libraries(${_target} ${WHATEVER_LIBRARY}) > endfunction() > > Another approach is if you have a low level library as part of your > codebase that everyone depends upon you can simply make it dependent > on your threading or logging libraries and anyone that is dependent > against it will automatically link against the threading or logging > library. > > > -- > Philip Lowman _______________________________________________ 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
