COMPILE_DEFINITIONS

編譯原始碼檔案的預處理器定義。

COMPILE_DEFINITIONS 屬性可以設定為以分號分隔的預處理器定義列表,使用語法 VARVAR=value。不支援函數樣式的定義。 CMake 將會自動為原生建置系統正確地逸出值(請注意,CMake 語言語法可能需要逸出才能指定某些值)。此屬性可以基於每個組態進行設定,使用名稱 COMPILE_DEFINITIONS_<CONFIG>,其中 <CONFIG> 是大寫名稱(例如 COMPILE_DEFINITIONS_DEBUG)。

CMake 將會自動捨棄原生建置工具不支援的一些定義。 Xcode 不支援原始碼檔案上每個組態的定義。

在版本 3.26 中新增: 任何項目開頭的 -D 都將被移除。

免責聲明:大多數原生建置工具對於逸出某些值的支援不佳。 CMake 針對許多情況有變通方法,但某些值可能無法正確傳遞。 如果值似乎未正確逸出,請勿嘗試通過向值添加逸出序列來解決問題。 您的變通方法可能會在未來版本的 CMake 中失效,該版本具有改進的逸出支援。 請考慮在(已配置的)標頭檔中定義巨集。 然後報告限制。 已知的限制包括

#

幾乎在所有地方都損壞。

;

在 VS IDE 7.0 和 Borland Makefiles 中損壞。

,

在 VS IDE 中損壞。

%

在 NMake 的某些情況下損壞。

& |

在 MinGW 的某些情況下損壞。

^ < > \ "

在 Windows 上的大多數 Make 工具中損壞。

CMake 不會直接拒絕這些值,因為它們在某些情況下確實有效。 請謹慎使用。

COMPILE_DEFINITIONS 的內容可以使用 cmake-generator-expressions(7),語法為 $<...>。 有關可用的表達式,請參閱 cmake-generator-expressions(7) 手冊。 但是,Xcode 不支援每個組態每個原始碼的設定,因此依賴建置組態的表達式不允許與該產生器一起使用。

建議在 COMPILE_DEFINITIONS 中使用產生器表達式,而不是已棄用的 COMPILE_DEFINITIONS_<CONFIG> 屬性。