| UNITY_BUILD |
| ----------- |
| |
| Should the target source files be processed into batches for |
| faster compilation. This feature is known as "Unity build", |
| or "Jumbo build". |
| |
| The `C` and `CXX` source files are grouped separately. |
| |
| This property is initialized by the value of the |
| :variable:`CMAKE_UNITY_BUILD` variable if it is set when |
| a target is created. |
| |
| .. note :: |
| |
| It's not recommended to directly set :prop_tgt:`UNITY_BUILD` |
| to `ON`, but to instead set :variable:`CMAKE_UNITY_BUILD` from |
| the command line. However, it IS recommended to set |
| :prop_tgt:`UNITY_BUILD` to `OFF` if you need to ensure that a |
| target doesn't get a unity build. |
| |
| The batch size can be specified by setting |
| :prop_tgt:`UNITY_BUILD_BATCH_SIZE`. |
| |
| The batching of source files is done by adding new sources files |
| wich will `#include` the source files, and exclude them from |
| building by setting :prop_sf:`HEADER_FILE_ONLY` to `ON`. |
| |
| |
| ODR (One definition rule) errors |
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
| |
| Since multiple source files are included into one source file, |
| it can lead to ODR errors. This section contains properties |
| which help fixing these errors. |
| |
| The source files marked by :prop_sf:`GENERATED` will be skipped |
| from unity build. This applies also for the source files marked |
| with :prop_sf:`SKIP_UNITY_BUILD_INCLUSION`. |
| |
| The source files that have :prop_sf:`COMPILE_OPTIONS`, |
| :prop_sf:`COMPILE_DEFINITIONS`, :prop_sf:`COMPILE_FLAGS`, or |
| :prop_sf:`INCLUDE_DIRECTORIES` will also be skipped. |
| |
| With the :prop_tgt:`UNITY_BUILD_CODE_BEFORE_INCLUDE` and |
| :prop_tgt:`UNITY_BUILD_CODE_AFTER_INCLUDE` one can specify code |
| to be injected in the unity source file before and after every |
| `#include` statement. |
| |
| .. note :: |
| |
| The order of source files defined in the `CMakeLists.txt` will |
| be preserved into the generated unity source files. This can |
| be used to manually enforce a specific grouping based on the |
| :prop_tgt:`UNITY_BUILD_BATCH_SIZE`. |