mirror of
https://github.com/Kitware/CMake.git
synced 2025-10-14 02:08:27 +08:00
Help: Document in add_library how to import libraries with SONAME
When using `add_library` to create an `IMPORTED` library target, there are a few target properties that are essential to correctly tell CMake about the library file. We already cover `IMPORTED_LOCATION` and `IMPORTED_IMPLIB`. Add `IMPORTED_SONAME` and `IMPORTED_NO_SONAME`, which are important in certain cases. Fixes: #22016
This commit is contained in:
@@ -189,12 +189,24 @@ The ``<type>`` must be one of:
|
||||
References a library file located outside the project. The
|
||||
:prop_tgt:`IMPORTED_LOCATION` target property (or its per-configuration
|
||||
variant :prop_tgt:`IMPORTED_LOCATION_<CONFIG>`) specifies the
|
||||
location of the main library file on disk. In the case of a ``SHARED``
|
||||
library on Windows, the :prop_tgt:`IMPORTED_IMPLIB` target property
|
||||
(or its per-configuration variant :prop_tgt:`IMPORTED_IMPLIB_<CONFIG>`)
|
||||
specifies the location of the DLL import library file (``.lib`` or
|
||||
``.dll.a``) on disk, and the ``IMPORTED_LOCATION`` is the location of
|
||||
the ``.dll`` runtime library (and is optional).
|
||||
location of the main library file on disk:
|
||||
|
||||
* For a ``SHARED`` library on most non-Windows platforms, the main library
|
||||
file is the ``.so`` or ``.dylib`` file used by both linkers and dynamic
|
||||
loaders. If the referenced library file has a ``SONAME`` (or on macOS,
|
||||
has a ``LC_ID_DYLIB`` starting in ``@rpath/``), the value of that field
|
||||
should be set in the :prop_tgt:`IMPORTED_SONAME` target property.
|
||||
If the referenced library file does not have a ``SONAME``, but the
|
||||
platform supports it, then the :prop_tgt:`IMPORTED_NO_SONAME` target
|
||||
property should be set.
|
||||
|
||||
* For a ``SHARED`` library on Windows, the :prop_tgt:`IMPORTED_IMPLIB`
|
||||
target property (or its per-configuration variant
|
||||
:prop_tgt:`IMPORTED_IMPLIB_<CONFIG>`) specifies the location of the
|
||||
DLL import library file (``.lib`` or ``.dll.a``) on disk, and the
|
||||
``IMPORTED_LOCATION`` is the location of the ``.dll`` runtime
|
||||
library (and is optional).
|
||||
|
||||
Additional usage requirements may be specified in ``INTERFACE_*`` properties.
|
||||
|
||||
An ``UNKNOWN`` library type is typically only used in the implementation of
|
||||
|
Reference in New Issue
Block a user