瀏覽代碼

Merge topic 'ep-support-passing-var-ending-with-notfound'

7ad5165c67 ExternalProject: Fix cache generation when args end with "-NOTFOUND"

Acked-by: Kitware Robot <[email protected]>
Merge-request: !2127
Brad King 7 年之前
父節點
當前提交
21b7e14800

+ 1 - 1
Modules/ExternalProject.cmake

@@ -1686,7 +1686,7 @@ function(_ep_command_line_to_initial_cache var args force)
   foreach(line ${args})
     if("${line}" MATCHES "^-D(.*)")
       set(line "${CMAKE_MATCH_1}")
-      if(setArg)
+      if(NOT "${setArg}" STREQUAL "")
         # This is required to build up lists in variables, or complete an entry
         string(APPEND setArg "${accumulator}\" CACHE ${type} \"Initial cache\" ${forceArg})")
         string(APPEND script_initial_cache "\n${setArg}")

+ 9 - 0
Tests/RunCMake/ExternalProject/CMAKE_CACHE_ARGS-check.cmake

@@ -33,3 +33,12 @@ if(NOT "${CMAKE_MATCH_0}" MATCHES FORCE)
   set(RunCMake_TEST_FAILED "Expected forced TEST_OPTIONAL argument")
   return()
 endif()
+
+if(NOT "${_cache}" MATCHES "set\\(TEST_OPTIONAL_LAST \"TEST_OPTIONAL_LAST-NOTFOUND\".+\\)")
+  set(RunCMake_TEST_FAILED "Cannot find TEST_OPTIONAL_LAST argument in cache")
+  return()
+endif()
+if(NOT "${CMAKE_MATCH_0}" MATCHES FORCE)
+  set(RunCMake_TEST_FAILED "Expected forced TEST_OPTIONAL_LAST argument")
+  return()
+endif()

+ 2 - 1
Tests/RunCMake/ExternalProject/CMAKE_CACHE_ARGS.cmake

@@ -9,4 +9,5 @@ ExternalProject_Add(FOO TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/tmp"
                         CMAKE_CACHE_ARGS
                             "-DFOO:STRING=$<1:BAR>$<0:BAD>"
                             "-DTEST_LIST:STRING=A;B;C"
-                            "-DTEST_OPTIONAL:FILEPATH=TEST_OPTIONAL-NOTFOUND")
+                            "-DTEST_OPTIONAL:FILEPATH=TEST_OPTIONAL-NOTFOUND"
+                            "-DTEST_OPTIONAL_LAST:FILEPATH=TEST_OPTIONAL_LAST-NOTFOUND")

+ 9 - 0
Tests/RunCMake/ExternalProject/CMAKE_CACHE_DEFAULT_ARGS-check.cmake

@@ -33,3 +33,12 @@ if("${CMAKE_MATCH_0}" MATCHES FORCE)
   set(RunCMake_TEST_FAILED "Expected not forced TEST_OPTIONAL argument")
   return()
 endif()
+
+if(NOT "${_cache}" MATCHES "set\\(TEST_OPTIONAL_LAST \"TEST_OPTIONAL_LAST-NOTFOUND\".+\\)")
+  set(RunCMake_TEST_FAILED "Cannot find TEST_OPTIONAL_LAST argument in cache")
+  return()
+endif()
+if("${CMAKE_MATCH_0}" MATCHES FORCE)
+  set(RunCMake_TEST_FAILED "Expected not forced TEST_OPTIONAL_LAST argument")
+  return()
+endif()

+ 2 - 1
Tests/RunCMake/ExternalProject/CMAKE_CACHE_DEFAULT_ARGS.cmake

@@ -9,4 +9,5 @@ ExternalProject_Add(FOO TMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/tmp"
                         CMAKE_CACHE_DEFAULT_ARGS
                             "-DFOO:STRING=$<1:BAR>$<0:BAD>"
                             "-DTEST_LIST:STRING=A;B;C"
-                            "-DTEST_OPTIONAL:FILEPATH=TEST_OPTIONAL-NOTFOUND")
+                            "-DTEST_OPTIONAL:FILEPATH=TEST_OPTIONAL-NOTFOUND"
+                            "-DTEST_OPTIONAL_LAST:FILEPATH=TEST_OPTIONAL_LAST-NOTFOUND")