mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
89 lines
3.4 KiB
Plaintext
89 lines
3.4 KiB
Plaintext
**Features available in all environments**
|
|
|
|
``DEFAULT``
|
|
This feature enables default link expression. This is mainly
|
|
useful with :prop_tgt:`LINK_LIBRARY_OVERRIDE` and
|
|
:prop_tgt:`LINK_LIBRARY_OVERRIDE_<LIBRARY>` target properties.
|
|
|
|
**Features available for a subset of environments**
|
|
|
|
``WHOLE_ARCHIVE``
|
|
Force load of all members in a static library.
|
|
|
|
Target platforms supported: all ``Apple`` variants, ``Linux``, all ``BSD``
|
|
variants, ``SunOS``, ``Windows``, ``CYGWIN``, and ``MSYS``.
|
|
|
|
Platform-specific notes:
|
|
|
|
* On Apple platforms, the library must be specified as a CMake target name, a
|
|
library file name (such as ``libfoo.a``), or a library file path (such as
|
|
``/path/to/libfoo.a``). It cannot be specified as a plain library name
|
|
(such as ``foo``, where ``foo`` is not CMake target), due to a limitation
|
|
in the Apple linker.
|
|
* On Windows platforms, for ``MSVC`` or MSVC-like toolchains, the version
|
|
must be greater than ``1900``.
|
|
|
|
**Features available in Apple environments**
|
|
|
|
It is assumed that the linker used is the one provided by `XCode` or is
|
|
compatible with it.
|
|
|
|
Framework support
|
|
|
|
``FRAMEWORK``
|
|
This option tells the linker to search for the specified
|
|
framework (use linker option ``-framework``).
|
|
``NEEDED_FRAMEWORK``
|
|
This is the same as the ``FRAMEWORK`` feature but means
|
|
to really link with the framework even if no symbols are used from it (use
|
|
linker option ``-needed_framework``).
|
|
``REEXPORT_FRAMEWORK``
|
|
This is the same as the ``FRAMEWORK`` feature but
|
|
also specifies that all symbols in that framework should be available to
|
|
clients linking to the library being created (use linker option
|
|
``-reexport_framework``).
|
|
``WEAK_FRAMEWORK``
|
|
This is the same as the ``FRAMEWORK`` feature but forces
|
|
the framework and all references to it to be marked as weak imports (use
|
|
linker option ``-weak_framework``).
|
|
|
|
Features for framework linking have a special handling in CMake: the
|
|
framework can be specified as a CMake framework target or file path. In the
|
|
first case, the target must have the :prop_tgt:`FRAMEWORK` target property set
|
|
as ``TRUE`` to enable framework handling. In the later case, if the path
|
|
includes a directory part, this one will be specified as framework search path
|
|
at link step.
|
|
|
|
.. code-block:: cmake
|
|
|
|
add_library(lib SHARED ...)
|
|
target_link_libraries(lib PRIVATE "$<LINK_LIBRARY:NEEDED_FRAMEWORK,/path/to/my_framework>")
|
|
|
|
# at link step we will have:
|
|
# -F/path/to -needed_framework my_framework
|
|
|
|
.. note::
|
|
|
|
The expected formats for the file path, with optional parts specified as
|
|
``()?``, are:
|
|
|
|
* (/path/to/)?FwName(.framework)?
|
|
* (/path/to/)?FwName.framework/FwName
|
|
* (/path/to/)?FwName.framework/Versions/\*/FwName
|
|
|
|
Library support
|
|
|
|
``NEEDED_LIBRARY``
|
|
This is the same as specifying a link item (target or
|
|
library) but means to really link with the item even if no symbols are used
|
|
from it (use linker option ``-needed_library`` or ``-needed-l``).
|
|
``REEXPORT_LIBRARY``
|
|
This is the same as specifying a link item (target or
|
|
library) but also specifies that all symbols in that item should be available
|
|
to clients linking to the library being created (use linker option
|
|
``-reexport_library`` or ``-reexport-l``).
|
|
``WEAK_LIBRARY``
|
|
This is the same as specifying a link item (target or
|
|
library) but forces the item and all references to it to be marked as weak
|
|
imports (use linker option ``-weak_library`` or ``-weak-l``).
|