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>_PATHXCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPYXCODE_EMBED_<type>_CODE_SIGN_ON_COPY