[CMake] shared and static library

Mike Talbot mtalbot at abingdon.oilfield.slb.com
Thu Feb 2 10:02:00 EST 2006


Darko Miletic wrote:

>Xavier Delannoy wrote:
>  
>
>>hi all, 
>>
>>Is there any proper way to build a shared AND static lib with cmake ?
>>    
>>
>
>Not directly from the same script. You will have to write two separate
>scripts for that. One that will produce static lib and another that will
>produce shared lib. It can be represented like this:
>
><root_source_dir>
>|
>|--<srcdir>
>|
>|--<static_lib_dir> (script goes here)
>|
>|--<shared_lib_dir> (script goes here)
>
>So in static_lib_dir CMakeLists.txt will be like this:
>
>SET (SRCS a.cpp b.cpp ... x.cpp)
>
>ADD_LIBRARY(<libname> STATIC ${SRCS})
>
>And in shared_lib_dir CMakeLists.txt will be like this:
>
>SET (SRCS a.cpp b.cpp ... x.cpp)
>
>ADD_LIBRARY(<libname> SHARED ${SRCS})
>
>Or even better you can have one file that lists source files in src
>folder and include that one in both scripts like this:
>
>sources.txt:
>
>SET(SRC a.cpp b.cpp ... x.cpp)
>
>
>So in static_lib_dir CMakeLists.txt will be like this:
>
>INCLUDE(${CGILib_SOURCE_DIR}/src/sources.txt)
>
>ADD_LIBRARY(<libname> STATIC ${SRCS})
>
>And in shared_lib_dir CMakeLists.txt will be like this:
>
>INCLUDE(${CGILib_SOURCE_DIR}/src/sources.txt)
>
>ADD_LIBRARY(<libname> SHARED ${SRCS})
>
>But you get the idea.
>
>  
>
I believe that if you don't specify STATIC or SHARED in the ADD_LIBRARY 
command, then you can control whether libraries are built as shared or 
static via the BUILD_SHARED_LIBS variable.  If you set this to true in 
your cache, then all libraries in your project that aren't explicitly 
STATIC will be built as shared and vice-versa.

something like this should do it:

cd static_lib_dir
cmake -D BUILD_SHARED_LIBS:BOOL=FALSE ../srcdir

cd shared_lib_dir
cmake -D BUILD_SHARED_LIBS:BOOL=TRUE ../srcdir

-- 
Mike Talbot
Senior Software Developer
Schlumberger
Lambourn Court, Wyndyke Furlong,
Abingdon Business Park, Abingdon,
Oxfordshire, OX14 1UJ, UK
Tel: +44 (0)1235 543 488

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://public.kitware.com/pipermail/cmake/attachments/20060202/5bc94984/attachment.htm


More information about the CMake mailing list