mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-30 02:59:22 -05:00
install,export: Maybe transform OBJECT libraries to INTERFACE libraries
Teach the `install` and `export` commands to support installing and exporting `OBJECT` libraries without their object files. Transform them to `INTERFACE` libraries in such cases. For `install(TARGETS)`, activate this when no destination for the object files is specified. For `export`, activate this only under Xcode with multiple architectures when we have no well-defined object file locations to give to clients.
This commit is contained in:
@@ -40,6 +40,13 @@ policy CMP0022 is NEW. If a library target is included in the export
|
||||
but a target to which it links is not included the behavior is
|
||||
unspecified.
|
||||
|
||||
.. note::
|
||||
|
||||
:ref:`Object Libraries` under :generator:`Xcode` have special handling if
|
||||
multiple architectures are listed in :variable:`CMAKE_OSX_ARCHITECTURES`.
|
||||
In this case they will be exported as :ref:`Interface Libraries` with
|
||||
no object files available to clients.
|
||||
|
||||
::
|
||||
|
||||
export(PACKAGE <name>)
|
||||
|
||||
@@ -183,6 +183,11 @@ export called ``<export-name>``. It must appear before any ``RUNTIME``,
|
||||
``LIBRARY``, ``ARCHIVE``, or ``OBJECTS`` options. To actually install the
|
||||
export file itself, call ``install(EXPORT)``, documented below.
|
||||
|
||||
:ref:`Interface Libraries` may be listed among the targets to install.
|
||||
They install no artifacts but will be included in an associated ``EXPORT``.
|
||||
If :ref:`Object Libraries` are listed but given no destination for their
|
||||
object files, they will be exported as :ref:`Interface Libraries`.
|
||||
|
||||
Installing a target with the :prop_tgt:`EXCLUDE_FROM_ALL` target property
|
||||
set to ``TRUE`` has undefined behavior.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user