blob: 836cc6b88ade68b40a106276323af941b9f6d1e5 [file] [log] [blame]
XCODE_LINK_BUILD_PHASE_MODE
---------------------------
.. versionadded:: 3.19
When using the :generator:`Xcode` generator, libraries to be linked will be
specified in the Xcode project file using either the "Link Binary With
Libraries" build phase or directly as linker flags. The former allows Xcode
to manage build paths, which may be necessary when creating Xcode archives
because it may use different build paths to a regular build.
This property controls usage of "Link Binary With Libraries" build phase for
a target that is an app bundle, executable, shared library, shared framework
or a module library.
Possible values are:
* ``NONE``
The libraries will be linked by specifying the linker flags directly.
* ``BUILT_ONLY``
The "Link Binary With Libraries" build phase will be used to link to another
target under the following conditions:
- The target to be linked to is a regular non-imported, non-interface library
target.
- The output directory of the target being built has not been changed from
its default (see :prop_tgt:`RUNTIME_OUTPUT_DIRECTORY` and
:prop_tgt:`LIBRARY_OUTPUT_DIRECTORY`).
* ``KNOWN_LOCATION``
The "Link Binary With Libraries" build phase will be used to link to another
target under the same conditions as with ``BUILT_ONLY`` and also:
- Imported library targets except those of type ``UNKNOWN``.
- Any non-target library specified directly with a path.
For all other cases, the libraries will be linked by specifying the linker
flags directly.
.. warning::
Libraries linked using "Link Binary With Libraries" are linked after the
ones linked through regular linker flags. This order should be taken into
account when different static libraries contain symbols with the same name,
as the former ones will take precedence over the latter.
.. warning::
If two or more directories contain libraries with identical file names and
some libraries are linked from those directories, the library search path
lookup will end up linking libraries from the first directory. This is a
known limitation of Xcode.
This property is initialized by the value of the
:variable:`CMAKE_XCODE_LINK_BUILD_PHASE_MODE` variable if it is set when a
target is created.