CUDA_STANDARD

新增於版本 3.8。

用於建置此目標的 CUDA/C++ 標準,其功能需求。

此屬性指定用於建置此目標的 CUDA/C++ 標準,及其功能需求。對於某些編譯器,這會導致在編譯行中加入諸如 -std=gnu++11 的旗標。

支援的值為:

98

CUDA C++98。請注意,這在內部對應到與 03 相同。

03

CUDA C++03

11

CUDA C++11

14

CUDA C++14。雖然 CMake 3.8 及更高版本識別 14 為有效值,但 CMake 3.9 是第一個包含任何編譯器支援的版本。

17

CUDA C++17。雖然 CMake 3.8 及更高版本識別 17 為有效值,但 CMake 3.18 是第一個包含任何編譯器支援的版本。

20

新增於版本 3.12。

CUDA C++20。雖然 CMake 3.12 及更高版本識別 20 為有效值,但 CMake 3.18 是第一個包含任何編譯器支援的版本。

23

新增於版本 3.20。

CUDA C++23

26

新增於版本 3.25。

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

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

set_property(TARGET tgt PROPERTY CUDA_STANDARD 11)

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

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

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