CMAKE_Swift_COMPILATION_MODE¶
在 3.29 版本中已添加。
指定 Swift 编译目标的方式。此变量用于初始化 Swift_COMPILATION_MODE
属性(在创建目标时)。
允许的值有
incremental
分别编译模块中的每个 Swift 源,从而提高构建的并行性。编译器会将其他信息发送到构建目录,从而改进重新编译在重新构建之间对源进行的微小更改时的性能。这个是迭代处理项目中的更改的最佳选项。
wholemodule
全模块优化编译最慢,但会生成经过最优化的库。整个上下文都是一次加载到编译器实例中,因此模块中的源文件之间没有并行性。
singlefile
分别编译 Swift 模块中的每个源,从而提高并行性。与
incremental
构建模式不同,编译器在构建期间不会发送任何其他信息,因此在对源文件进行微小更改后重新构建不会加快速度。这个选项应该谨慎用,优选incremental
构建(除非需绕过编译器错误)。
使用 generator expressions
支持按配置进行规范。例如,代码
set(CMAKE_Swift_COMPILATION_MODE
"$<IF:$<CONFIG:Release>,wholemodule,incremental>")
在构建发布配置时将默认 Swift 编译模式设为 wholemodule 模式,而在其他配置中设为增量模式。
如果未设置此变量,则不会自动设置 Swift_COMPILATION_MODE
目标属性。如果该属性未设置,CMake 会使用默认值 incremental
构建 Swift 源文件。
注意
此属性仅在策略 CMP0157
在第一个 project()
或启用 Swift 语言的 enable_language()
命令之前设置为 NEW
时才有效。