On 05/27/2010 05:32 PM, Torri, Stephen CIV NSWCDD, W15 wrote: >> From: cmake-boun...@cmake.org on behalf of Doug Reiland >> Sent: Thu 5/27/2010 11:14 AM >> To: cmake@cmake.org >> Subject: [CMake] cmake - library help >> >> First, I am new to cmake and exploring converting our home grown build >> system. >> How would I code this up in cmake >> I have composite objects that need to be added to a share library >> add_library(foo a.c b.c c.c) > > Use the keyword 'SHARED' to indicate you need shared library: > > add_library (foo SHARED a.c b.c c.c) > >> I also need x.o in the library AND x.o linked from: >> subdir-a/aa.c subdir-a/bb.c > > If the subdirectories have a project named in a CMakeLists.txt you can just > tell cmake to link the library in: > > So if subdir-a has a project like: > > cmake_minimum_required(VERSION 2.6) > add_library (subA aa.c bb.c ) > > then you can link subA inside the other project. For example say the 'foo' > library needs to statically link in subA. > > add_library ( foo SHARED a.c b.c c.c) > link_libraries ( subA )
LINK_LIBRARIES() applies solely to targets defined *later*, i.e. foo won't link against subA, but in return, all later targets will do even if this isn't necessary. Thus, TARGET_LINK_LIBRARIES(foo subA) probably suits better to express foo's need to be linked against subA. Moreover, it tracks mediate dependencies automatically, e.g. if subA depends on, say, subAA, then foo will be linked to subAA, too, although there has not been a TARGET_LINK_LIBRARIES(foo subAA). Finally, LINK_LIBRARIES() is considered as obsolete; in fact, the CMake 2.6 documentation does not regularly mention it anymore, and in 2.4, it's denoted "old". Regards, Michael _______________________________________________ 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