CXX_STANDARD

於 3.1 版本新增。

用於建置此目標的 C++ 標準要求的功能。

此屬性指定用於建置此目標的 C++ 標準要求的功能。對於某些編譯器,這會導致在編譯行中加入諸如 -std=gnu++11 之類的標誌。對於沒有標準層級概念的編譯器,例如 2015 Update 3 之前的 Microsoft Visual C++,這沒有任何效果。

支援的值為

98

C++98

11

C++11

14

C++14

17

於 3.8 版本新增。

C++17

20

於 3.12 版本新增。

C++20

23

於 3.20 版本新增。

C++23

26

於 3.25 版本新增。

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

如果請求的值無法讓正在使用的編譯器加入編譯標誌,則會改為加入先前的標準標誌。這表示使用

set_property(TARGET tgt PROPERTY CXX_STANDARD 11)

搭配不支援 -std=gnu++11 或等效標誌的編譯器時,不會導致錯誤或警告,而是會在支援的情況下加入 -std=gnu++98 標誌。此「衰減」行為可以使用 CXX_STANDARD_REQUIRED 目標屬性來控制。此外,CXX_EXTENSIONS 目標屬性可用於控制是否在每個目標啟用編譯器特定的擴充功能。

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

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