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 时才有效。