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
變數,則此屬性會由此變數的值初始化。