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
变量,则此属性由该变量的值初始化。