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 變數的值初始化(如果在建立目標時已設定)。