XCODE_EMBED_<type>

在 3.20 版本中添加。

指示 Xcode 生成器将指定的项目列表嵌入到目标包中。 `<type>` 指定要使用的嵌入构建阶段。有关每个 `<type>` 的基本位置,请参阅 Xcode 文档。

支持的 `<type>` 值包括:

FRAMEWORKS

指定的项目将添加到 `Embed Frameworks` 构建阶段。项目可以是 CMake 目标名称或框架或库的路径。

APP_EXTENSIONS

3.21 版本新增。

指定的项目将添加到 `Embed App Extensions` 构建阶段,其中 `Destination` 设置为 `PlugIns and Foundation Extensions`。它们必须是 CMake 目标名称。

EXTENSIONKIT_EXTENSIONS

3.26 版新增。

指定的项目将添加到 `Embed App Extensions` 构建阶段,其中 `Destination` 设置为 `ExtensionKit Extensions`。它们必须是 CMake 目标名称,并且可能应将 `XCODE_PRODUCT_TYPE` 目标属性设置为 `com.apple.product-type.extensionkit-extension`,并将 `XCODE_EXPLICIT_FILE_TYPE` 设置为 `wrapper.extensionkit-extension`。

PLUGINS

在版本 3.23 中添加。

指定的项目将添加到 `Embed PlugIns` 构建阶段。它们必须是 CMake 目标名称。

RESOURCES

版本 3.28 新增。

指定的项目将添加到 `Embed Resources` 构建阶段。它们必须是 CMake 目标名称或文件夹路径。

XPC_SERVICES

在版本 3.29 中添加。

指定的项目将添加到 `Embed XPC Services` 构建阶段。它们必须是 CMake 目标名称。

当将目标列为要嵌入的任何内容时,Xcode 必须将该目标视为同一 Xcode 项目的一部分,或者视为定义该包的项目的子项目。为了满足此约束,CMake 项目必须确保以下至少一项:

  • `CMakeLists.txt` 顶层文件中的 `CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY 变量设置为 true。这是最简单、最稳健的方法。

  • 在定义要嵌入的目标的子目录中定义要嵌入的目标。

  • 如果要嵌入的目标和要嵌入的目标位于单独的不相关目录中(即,它们是同级关系,而不是一个目录是另一个目录的父目录),请确保它们在父目录中具有共同的 `project() 调用,并且它们与该共同的 `project() 调用之间没有其他 `project() 调用。

另请参阅 `XCODE_EMBED_<type>_PATH、`XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY 和 `XCODE_EMBED_<type>_CODE_SIGN_ON_COPY