COMPILE_DEFINITIONS¶
用於編譯原始檔的預處理器定義。
COMPILE_DEFINITIONS
屬性可以設定為以分號分隔的預處理器定義清單,使用 VAR
或 VAR=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
不支援每個組態、每個來源設定,因此使用該產生器時,不允許使用依賴於建置組態的表示式。
應該優先使用產生器表示式,而不是設定替代的每個組態屬性。