Ver código fonte

CUDA: Improve error message when CMAKE_CUDA_ARCHITECTURES contains quotes

Closes: #27150
Brad King 2 meses atrás
pai
commit
36673385bb

+ 5 - 0
Modules/Internal/CMakeCUDAArchitecturesValidate.cmake

@@ -5,6 +5,11 @@ function(cmake_cuda_architectures_validate lang)
   if(DEFINED CMAKE_${lang}_ARCHITECTURES)
     if(CMAKE_${lang}_ARCHITECTURES STREQUAL "")
       message(FATAL_ERROR "CMAKE_${lang}_ARCHITECTURES must be non-empty if set.")
+    elseif(CMAKE_${lang}_ARCHITECTURES MATCHES [["]])
+      message(FATAL_ERROR
+        "CMAKE_${lang}_ARCHITECTURES contains literal quotes:\n"
+        "  ${CMAKE_${lang}_ARCHITECTURES}\n"
+      )
     elseif(CMAKE_${lang}_ARCHITECTURES AND NOT CMAKE_${lang}_ARCHITECTURES MATCHES "^([0-9]+(a|f)?(-real|-virtual)?(;[0-9]+(a|f)?(-real|-virtual)?|;)*|all|all-major|native)$")
       message(FATAL_ERROR
         "CMAKE_${lang}_ARCHITECTURES:\n"

+ 1 - 0
Tests/RunCMake/CUDA_architectures/RunCMakeTest.cmake

@@ -5,6 +5,7 @@ run_cmake(architectures-all-major)
 run_cmake(architectures-native)
 run_cmake(architectures-empty)
 run_cmake(architectures-invalid)
+run_cmake(architectures-quotes)
 
 run_cmake(architectures-not-set)
 include("${RunCMake_BINARY_DIR}/architectures-not-set-build/info.cmake" OPTIONAL)

+ 1 - 0
Tests/RunCMake/CUDA_architectures/architectures-quotes-result.txt

@@ -0,0 +1 @@
+1

+ 10 - 0
Tests/RunCMake/CUDA_architectures/architectures-quotes-stderr.txt

@@ -0,0 +1,10 @@
+^CMake Error at .*/Internal/CMakeCUDAArchitecturesValidate\.cmake:[0-9]+ \(message\):
+  CMAKE_CUDA_ARCHITECTURES contains literal quotes:
+
+    "all-major"
+
+Call Stack \(most recent call first\):
+  [^
+]*/Modules/CMakeDetermineCUDACompiler.cmake:[0-9]+ \(cmake_cuda_architectures_validate\)
+  architectures-quotes\.cmake:2 \(enable_language\)
+  CMakeLists\.txt:3 \(include\)$

+ 2 - 0
Tests/RunCMake/CUDA_architectures/architectures-quotes.cmake

@@ -0,0 +1,2 @@
+set(CMAKE_CUDA_ARCHITECTURES "\"all-major\"")
+enable_language(CUDA)