COMPILE_DEFINITIONS

用於編譯原始檔的預處理器定義。

COMPILE_DEFINITIONS 屬性可以設定為以分號分隔的預處理器定義清單,使用 VARVAR=value 的語法。不支援函式式定義。 CMake 會自動針對原生建置系統正確跳脫值(請注意,CMake 語言語法可能需要跳脫才能指定某些值)。此屬性可以使用名稱 COMPILE_DEFINITIONS_<CONFIG> 在每個組態的基礎上設定,其中 <CONFIG> 是大寫名稱(例如 COMPILE_DEFINITIONS_DEBUG)。

CMake 會自動刪除原生建置工具不支援的一些定義。 Xcode 不支援原始檔上的每個組態定義。

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

免責聲明:大多數原生建置工具對於跳脫某些值的支援很差。 CMake 對於許多情況都有解決方法,但可能無法正確傳遞某些值。如果某個值似乎沒有正確跳脫,請勿嘗試通過在該值中新增跳脫序列來解決問題。您的解決方法可能會在未來版本的 CMake 中因改進的跳脫支援而失效。相反,請考慮在(已設定的)標頭檔中定義巨集。然後回報限制。已知限制包括

#          - broken almost everywhere
;          - broken in VS IDE 7.0 and Borland Makefiles
,          - broken in VS IDE
%          - broken in some cases in NMake
& |        - broken in some cases on MinGW
^ < > \"   - broken in most Make tools on Windows

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

COMPILE_DEFINITIONS 的內容可以使用 cmake-generator-expressions(7),語法為 $<...>。請參閱 cmake-generator-expressions(7) 手冊,以了解可用的表示式。但是,Xcode 不支援每個組態、每個來源設定,因此使用該產生器時,不允許使用依賴於建置組態的表示式。

應該優先使用產生器表示式,而不是設定替代的每個組態屬性。