XCODE_EMBED_<type>

添加于 3.20 版本。

告诉 Xcode 生成器将指定的项目列表嵌入到目标 bundle 中。 <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 项目的一部分,或定义 bundle 的项目的子项目。 为了满足此约束,CMake 项目必须确保至少满足以下条件之一

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

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

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

另请参阅 XCODE_EMBED_<type>_PATHXCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPYXCODE_EMBED_<type>_CODE_SIGN_ON_COPY