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)