UNITY_BUILD_RELOCATABLE

在 4.0 版本中添加。

默认情况下,当启用 UNITY_BUILD 时生成的统一文件使用绝对路径来引用原始源文件。这会导致统一文件产生不同的输出,具体取决于源文件的位置。

当此属性设置为 true 时,生成的统一源文件中的 #include 行将尝试使用相对于原始源文件的相对路径(如果可能),以便标准化统一文件的输出。

统一文件到原始源文件的路径将使用以下优先级

  • 如果源文件直接存在于 CMAKE_BINARY_DIR 下或子文件夹中,则使用相对于生成的统一文件的相对路径

  • 如果源文件直接存在于 CMAKE_SOURCE_DIR 下或子文件夹中,则使用相对于 CMAKE_SOURCE_DIR 的相对路径

  • 到源文件的绝对路径。

此目标属性不能保证在不同环境之间获得一致的统一文件,因为最终优先级是绝对路径。

用法示例

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

set_target_properties(example_library PROPERTIES
                      UNITY_BUILD True
                      UNITY_BUILD_RELOCATABLE TRUE)