StaticShared¶
This module provides an equivalent of cmake’s add_library
function that builds
both static and shared libraries from the same set of object file which improves
compilation time.
Warning
Objects are created with -fPIC
flag which may lead to a loss of runtime
performance when linking to static library.
Prerequisites¶
- name and version
The following variables must be defined :
PROJECT_NAME
PROJECT_VERSION_MAJOR
PROJECT_VERSION_MINOR
PROJECT_VERSION_PATH
- cmake
- This module doesn’t work properly with cmake version prior to 3.0. However this module is still compatible with such versions but will create two separate sets of objects for static and shared libraries.
Functions¶
add_shared_static_library(<libname>
<source> [ <source> ... ]
[ INSTALL_HEADERS_PATTERNS <pattern> [<pattern> ...]]
[ INSTALL_HEADERS_DESTINATION <path> ]
[ INSTALL_LIBS_DESTINATION <path> ]
[ INSTALL_HEADERS_DIRECTORY <dir> ]
[ VERSION <version> ]
[ SOVERSION <version> ]
[ NOINSTALL ]
)
Parameters¶
- libname
- Internal name of target libraries. At install time, files will be respectively
named
lib${PROJECT_NAME}<name>.so
andlib${PROJECT_NAME}<name>.a
. - source
- List of source file to build in libraries.
- INSTALL_HEADERS_PATTERNS
List of glob pattern to match headers file to install with target libraries.
Default value is given by
StaticShared_DEFAULT_INSTALL_HEADERS_PATTERNS
.- INSTALL_HEADERS_DIRECTORY
Directory containing headers to install with target libraries.
Default value is given by
StaticShared_DEFAULT_INSTALL_HEADERS_DIRECTORY
.- INSTALL_HEADERS_DESTINATION
Headers target install directory.
Default value is given by
StaticShared_DEFAULT_INSTALL_HEADERS_DESTINATION
.- INSTALL_LIBS_DESTINATION
Libraries target install directory
Default value is given by
StaticShared_DEFAULT_INSTALL_LIBS_DESTINATION
.- VERSION
- Shared library version given to cmake
VERSION
property - SOVERSION
- Shared library version given to cmake
SOVERSION
property. - NOINSTALL
- Disables installation configuration for current libraries
Global variables¶
-
StaticShared_DEFAULT_INSTALL_LIBS_DESTINATION
¶ -
"lib"
-
StaticShared_DEFAULT_INSTALL_HEADERS_DESTINATION
¶ -
"include/${PROJECT_NAME}/${name}"
-
StaticShared_DEFAULT_INSTALL_HEADERS_PATTERNS
¶ -
"*.h;*.hxx;*.hh;*.hpp"
-
StaticShared_DEFAULT_DIRECTORY
¶ -
"src/"
-
StaticShared_DEFAULT_DEFAULT_VERSION
¶ -
"${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
-
StaticShared_DEFAULT_DEFAULT_SOVERSION
¶ -
"${PROJECT_VERSION_MAJOR}"
Generated targets¶
<libname>
- Target shared library
<libname>_s
- Target static library