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 变量,此属性将通过该变量的值进行初始化。