blob: 0354f978c48fcb953d1acc87a34f33fe9e749654 [file] [log] [blame]
XCODE_EMBED_<type>
------------------
.. versionadded:: 3.20
Tell the :generator:`Xcode` generator to embed the specified list of items into
the target bundle. ``<type>`` specifies the embed build phase to use.
See the Xcode documentation for the base location of each ``<type>``.
The supported values for ``<type>`` are:
``FRAMEWORKS``
The specified items will be added to the ``Embed Frameworks`` build phase.
The items can be CMake target names or paths to frameworks or libraries.
``APP_EXTENSIONS``
.. versionadded:: 3.21
The specified items will be added to the ``Embed App Extensions`` build
phase, with ``Destination`` set to ``PlugIns and Foundation Extensions``
They must be CMake target names.
``EXTENSIONKIT_EXTENSIONS``
.. versionadded:: 3.26
The specified items will be added to the ``Embed App Extensions`` build
phase, with ``Destination`` set to ``ExtensionKit Extensions``
They must be CMake target names, and should likely have the
``XCODE_PRODUCT_TYPE`` target property set to
``com.apple.product-type.extensionkit-extension``
as well as the ``XCODE_EXPLICIT_FILE_TYPE`` to
``wrapper.extensionkit-extension``
``PLUGINS``
.. versionadded:: 3.23
The specified items will be added to the ``Embed PlugIns`` build phase.
They must be CMake target names.
``RESOURCES``
.. versionadded:: 3.28
The specified items will be added to the ``Embed Resources`` build phase.
They must be CMake target names or folder paths.
``XPC_SERVICES``
.. versionadded:: 3.29
The specified items will be added to the ``Embed XPC Services`` build phase.
They must be CMake target names.
When listing a target as any of the things to embed, Xcode must see that target
as part of the same Xcode project, or a sub-project of the one defining the
bundle. In order to satisfy this constraint, the CMake project must ensure
at least one of the following:
* The :variable:`CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY` variable is set
to true in the top level ``CMakeLists.txt`` file. This is the simplest and
most robust approach.
* Define the target-to-embed in a subdirectory of the one that defines the
target being embedded into.
* If the target-to-embed and the target being embedded into are in separate,
unrelated directories (i.e. they are siblings, not one a parent of the
other), ensure they have a common :command:`project` call in a parent
directory and no other :command:`project` calls between themselves and that
common :command:`project` call.
See also :prop_tgt:`XCODE_EMBED_<type>_PATH`,
:prop_tgt:`XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY` and
:prop_tgt:`XCODE_EMBED_<type>_CODE_SIGN_ON_COPY`.