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>_PATH
、 XCODE_EMBED_<type>_REMOVE_HEADERS_ON_COPY
和 XCODE_EMBED_<type>_CODE_SIGN_ON_COPY
。