CUDA: Add support for cuda_std_20 for nvcc 12.0+

CUDA 12.0 has been released with support for `-std=c++20`.
This commit is contained in:
Robert Maynard
2022-12-09 12:20:02 -05:00
committed by Brad King
parent 6db3519c41
commit 0aeeb8160c
2 changed files with 18 additions and 0 deletions

View File

@@ -246,3 +246,9 @@ Changes made since CMake 3.25.0 include the following.
command no longer accepts ``.a`` file names. This behavior was added
in CMake 3.25.0, but has been reverted due finding GNU-ABI libraries
in cases we did not previously.
3.25.2
------
* CUDA language level 20 (corresponding to C++20) is now supported with
NVCC 12.0 and above.

View File

@@ -119,6 +119,13 @@ if("x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC")
endif()
endif()
if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 12.0)
if(CMAKE_CUDA_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.11.25505)
set(CMAKE_CUDA20_STANDARD_COMPILE_OPTION "-std=c++20")
set(CMAKE_CUDA20_EXTENSION_COMPILE_OPTION "-std=c++20")
endif()
endif()
else()
set(CMAKE_CUDA03_STANDARD_COMPILE_OPTION "")
set(CMAKE_CUDA03_EXTENSION_COMPILE_OPTION "")
@@ -138,6 +145,11 @@ else()
set(CMAKE_CUDA17_EXTENSION_COMPILE_OPTION "-std=c++17")
endif()
if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 12.0)
set(CMAKE_CUDA20_STANDARD_COMPILE_OPTION "-std=c++20")
set(CMAKE_CUDA20_EXTENSION_COMPILE_OPTION "-std=c++20")
endif()
endif()
if (CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "9.0")