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