CMAKE_Swift_COMPILATION_MODE

在版本 3.29 中添加。

指定 Swift 如何编译一个目标。此变量用于初始化它们创建时目标上的 Swift_COMPILATION_MODE 属性。

允许的值为

incremental

分别编译模块中的每个 Swift 源文件,从而提高构建的并行性。编译器将额外信息输出到构建目录,在重建之间对源文件进行的小幅更改可以提高重建性能。这是在项目中迭代更改时的最佳选项。

wholemodule

全模块优化编译速度最慢,但库的优化程度最高。整个上下文会加载到编译器的一个实例中,因此模块中的源文件之间没有并行性。

singlefile

分别编译 Swift 模块中的每个源文件,从而提高并行性。与 incremental 构建模式不同,编译器在构建期间不会输出额外信息,因此在对源文件进行小幅更改后重建不会更快。除非是为了规避编译器 bug,否则应谨慎使用此选项,优先选择 incremental 构建。

使用 生成器表达式 来支持按配置指定。例如,以下代码

set(CMAKE_Swift_COMPILATION_MODE
  "$<IF:$<CONFIG:Release>,wholemodule,incremental>")

在构建 release 配置时,将默认 Swift 编译模式设置为 wholemodule 模式,在其他配置中设置为 incremental 模式。

如果未设置此变量,则 Swift_COMPILATION_MODE 目标属性将不会自动设置。如果该属性未设置,则 CMake 使用默认值 incremental 来构建 Swift 源文件。

注意

此属性仅在策略 CMP0157 设置为 NEW 且在第一个 project()enable_language() 命令(该命令启用 Swift 语言)之前生效。