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> 屬性。