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 变量的值初始化,如果该变量在目标创建时已设置。