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