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,則 CXX_STANDARD 的值會設定給 OBJCXX_STANDARD

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

如果在建立目標時設定了 CMAKE_OBJCXX_STANDARD 變數,則此屬性會由此變數的值初始化。