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

Reply via email to