[CMake] link static libraries to a share library
Michael Hertling
mhertling at online.de
Thu Apr 7 15:12:00 EDT 2011
On 04/07/2011 07:37 PM, Jiang Xu wrote:
> Hi All,
>
> I am new to cmake, but I really like it after looking into it.
> I am in the process to make some changes to our current make file system.
> I wonder how can I archieve the following goal using cmake:
>
> 1. The root directory is features/
> 2. Under root directory, there is a set of subdirectories as: feature_1/, feature_2/, ... feature_n/
> 3. Under each subdirectory, there is a CMakeList.txt to compile a static library for each feature. For example, in CMakeList.txt under feature_1 directory, it has a line to create static library target: add_library(feature_1, STATIC, ${FEATURE_1_SRCS})
> 4. Under root directory, there is no source code, all it does is based on user input (command line) to go into different sub-directories to build each static libraries and try to link all of them into a shared library.
>
> It looks like add_library command must have any source code files in it. So I don't know how to add a shared library target and all it does is to link different static libraries, there is no source file. Can someone please help me?
>
> Thanks in advance.
>
> John
This is not possible with CMake, cf. [1]. Instead, you'll have either to
- build one shared library in each feature_* directory to link against,
e.g. ADD_LIBRARY(feature_1 SHARED feature_1.c ...) in feature_1, or
- build one shared library in the root directory with all the sources
from the feature_* directories, e.g. ADD_LIBRARY(features SHARED
feature_1/feature_1.c feature_2/feature_2.c ...) in features.
Besides, object files for static libraries and object files for shared
libraries are usually compiled with different flags, in particular with
regard to -fPIC, so they might not be interchangeable without further ado.
'hope that helps.
Regards,
Michael
> [1] http://www.cmake.org/Wiki/CMake_FAQ#Does_CMake_support_.22convenience.22_libraries.3F
More information about the CMake
mailing list