UNITY_BUILD_MODE

在版本 3.18 中添加。

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

BATCH

在此模式中,CMake 确定哪些文件组合在一起。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 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