XCODE_EMBED_<type> — CMake 3.31.2 Documentation

# XCODE_EMBED_<type>

Added in version 3.20.

Tell the `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`

  Added in version 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`

  Added in version 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`

  Added in version 3.23.

  The specified items will be added to the `Embed PlugIns` build phase. They must be CMake target names.

`RESOURCES`

  Added in version 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`

  Added in version 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 `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 `project()` call in a parent directory and no other `project()` calls between themselves and that common `project()` call.

See also `XCODE_EMBED_<type>_PATH`, `XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY` and `XCODE_EMBED_<type>_CODE_SIGN_ON_COPY`.