COMPILE_DEFINITIONS

用於編譯目標原始碼的預處理器定義。

可以將 COMPILE_DEFINITIONS 屬性設定為以分號分隔的預處理器定義列表,語法為 VARVAR=value。 不支援函數樣式的定義。 CMake 將自動為原生建置系統正確地跳脫值 (請注意,CMake 語言語法可能需要跳脫字元才能指定某些值)。

CMake 將自動捨棄原生建置工具不支援的一些定義。

在版本 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-buildsystem(7) 手冊。

對應的 COMPILE_DEFINITIONS_<CONFIG> 屬性可以設定為指定每個組態的定義。 應該優先使用產生器表達式,而不是設定替代屬性。