CMAKE_Swift_COMPILATION_MODE¶
在版本 3.29 中添加。
指定 Swift 如何编译目标。此变量用于初始化在创建时目标的 Swift_COMPILATION_MODE
属性。
允许的值为
incremental
分别编译模块中的每个 Swift 源文件,从而在构建中实现更好的并行性。编译器会将额外信息发出到构建目录中,从而在重建之间对源代码进行微小更改时提高重建性能。这是在项目中迭代更改时的最佳选项。
wholemodule
全模块优化编译速度最慢,但会产生最优化的库。整个上下文会被加载到一次编译器实例中,因此模块中的源文件之间没有并行性。
singlefile
分别编译 Swift 模块中的每个源文件,从而实现更好的并行性。与
incremental
构建模式不同,编译器在构建过程中不会发出额外信息,因此在对源文件进行微小更改后重建不会运行得更快。此选项应谨慎使用,优先使用incremental
构建,除非是为了解决编译器 bug。
使用 生成器表达式
来支持按配置指定。例如,以下代码
set(CMAKE_Swift_COMPILATION_MODE
"$<IF:$<CONFIG:Release>,wholemodule,incremental>")
在构建 release 配置时,将默认的 Swift 编译模式设置为 wholemodule 模式,在其他配置中设置为 incremental 模式。
如果未设置此变量,则 Swift_COMPILATION_MODE
目标属性将不会自动设置。如果该属性未设置,CMake 将使用默认值 incremental
来构建 Swift 源文件。
注意
此属性仅在策略 CMP0157
设置为 NEW
且早于第一个启用 Swift 语言的 project()
或 enable_language()
命令时有效。