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
變數的值初始化。