UNITY_BUILD_MODE

在 3.18 版本中添加。

CMake 提供了不同的算法来选择哪些源文件被分组到一个bucket中。 选择由这个属性决定,它具有以下可接受的值

BATCH

在这种模式下,CMake 决定哪些文件被分组在一起。UNITY_BUILD_BATCH_SIZE 属性控制每个 unity 源文件可以组合的源文件的上限。

用法示例

add_library(example_library
            source1.cxx
            source2.cxx
            source3.cxx
            source4.cxx)

set_target_properties(example_library PROPERTIES
                      UNITY_BUILD_MODE BATCH
                      UNITY_BUILD_BATCH_SIZE 2
                      )
GROUP

在这种模式下,每个目标显式地指定如何对源文件进行分组。每个具有相同 UNITY_GROUP 值的源文件将被分组在一起。 任何没有此属性的源文件将被单独编译。UNITY_BUILD_BATCH_SIZE 属性在使用此模式时将被忽略。

用法示例

add_library(example_library
            source1.cxx
            source2.cxx
            source3.cxx
            source4.cxx)

set_target_properties(example_library PROPERTIES
                      UNITY_BUILD_MODE GROUP
                      )

set_source_files_properties(source1.cxx source2.cxx source3.cxx
                            PROPERTIES UNITY_GROUP "bucket1"
                            )
set_source_files_properties(source4.cxx
                            PROPERTIES UNITY_GROUP "bucket2"
                            )

如果没有显式指定 UNITY_BUILD_MODE,CMake 将默认使用 BATCH