UNITY_BUILD_MODE

From Get docs
Cmake/docs/3.21/prop tgt/unity build mode


UNITY_BUILD_MODE

New in version 3.18.


CMake provides different algorithms for selecting which sources are grouped together into a bucket. Selection is decided by this property, which has the following acceptable values:

BATCH

When in this mode CMake determines which files are grouped together. The UNITY_BUILD_BATCH_SIZE property controls the upper limit on how many sources can be combined per unity source file.

Example usage:

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

When in this mode each target explicitly specifies how to group source files. Each source file that has the same UNITY_GROUP value will be grouped together. Any sources that don't have this property will be compiled individually. The UNITY_BUILD_BATCH_SIZE property is ignored when using this mode.

Example usage:

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"
                            )

If no explicit UNITY_BUILD_MODE has been specified, CMake will default to BATCH.

© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.21/prop_tgt/UNITY_BUILD_MODE.html