Sfoglia il codice sorgente

Merge topic 'cuda-nvcc-cuda20' into release-3.25

0aeeb8160c CUDA: Add support for cuda_std_20 for nvcc 12.0+

Acked-by: Kitware Robot <[email protected]>
Merge-request: !8008
Brad King 2 anni fa
parent
commit
2d3ed58cee
2 ha cambiato i file con 18 aggiunte e 0 eliminazioni
  1. 6 0
      Help/release/3.25.rst
  2. 12 0
      Modules/Compiler/NVIDIA-CUDA.cmake

+ 6 - 0
Help/release/3.25.rst

@@ -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.

+ 12 - 0
Modules/Compiler/NVIDIA-CUDA.cmake

@@ -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")