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