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 变量的值,此属性将根据该值进行初始化.