OBJCXX_STANDARD

在版本 3.16 中新增。

此目標請求建置時使用的 ObjC++ 標準。

此屬性指定此目標請求建置時使用的 ObjC++ 標準。對於某些編譯器,這會導致在編譯行中加入類似 -std=gnu++11 的旗標。

支援的值包括

98

Objective C++98

11

Objective C++11

14

Objective C++14

17

Objective C++17

20

Objective C++20

23

在版本 3.20 中新增。

Objective C++23

26

在版本 3.25 中新增。

Objective C++26。CMake 3.25 和更新版本識別 26 為有效值,但沒有任何版本支援任何編譯器。

如果請求的值沒有導致為正在使用的編譯器加入編譯旗標,則會改為加入先前的標準旗標。這表示使用

set_property(TARGET tgt PROPERTY OBJCXX_STANDARD 11)

如果編譯器不支援 -std=gnu++11 或等效的旗標,則不會導致錯誤或警告,而是會加入 -std=gnu++98 旗標(如果支援的話)。此「衰減」行為可以使用 OBJCXX_STANDARD_REQUIRED 目標屬性來控制。此外,OBJCXX_EXTENSIONS 目標屬性可以用於控制是否在每個目標的基礎上啟用編譯器特定的擴充功能。

如果未設定此屬性,且專案已設定 CXX_STANDARD,則會為 OBJCXX_STANDARD 設定 CXX_STANDARD 的值。

請參閱 cmake-compile-features(7) 手冊,以取得關於編譯功能和支援編譯器列表的資訊。

如果建立目標時已設定 CMAKE_OBJCXX_STANDARD 變數,則會使用該變數的值來初始化此屬性。