CMP0157¶
在版本 3.29 中添加。
Swift 编译模式由抽象概念选择。
Swift 编译器可以在不同的模式下编译模块。所需的构建模式取决于开发者是迭代开发并希望增量更改,还是构建用于发布的版本并希望对生成的二进制文件应用更多优化。
CMake 3.26 至 3.28 版本在非调试构建类型配置中构建 Swift 二进制文件时,默认启用全模块优化。对于早于 3.26 的 CMake 版本,开发者需要为 Ninja 生成器 手动指定必要的标志,并且不能为 Xcode
生成器指定全模块优化。
CMake 3.29 及更高版本倾向于使用 Swift_COMPILATION_MODE
目标属性来设置编译模式,该属性可以通过 CMAKE_Swift_COMPILATION_MODE
变量进行初始化。
此策略为尚未更新的项目提供兼容性。策略设置在第一个启用 Swift
语言的 project()
或 enable_language()
命令生效。
注意
一旦策略在项目顶层生效,则必须在整个树中使用该选择。在子目录中包含嵌套项目的项目中,请务必将所有内容一起转换。
此策略的 OLD
行为是在非调试配置中以 wholemodule
模式构建所有 Swift 目标。Ninja 生成器 将 -wmo
标志添加到 Swift 标志的默认集合中。Xcode
生成器在生成的 Xcode 项目文件中将 SWIFT_COMPILATION_MODE
属性设置为 wholemodule
。
此策略的 NEW
行为是应用在 Swift_COMPILATION_MODE
目标属性中指定的编译模式,该模式在创建每个目标时由 CMAKE_Swift_COMPILATION_MODE
变量初始化。
此策略在 CMake 3.29 版本中引入。它可以通过 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 不会发出警告,并使用 OLD
行为。
注意
策略的 OLD
行为 按定义已弃用
,并可能在未来的 CMake 版本中移除。