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