Browse Source

Merge topic 'backport-3.31-file-MAKE_DIRECTORY-result-var' into release-3.31

a039a1655d file(MAKE_DIRECTORY): Clarify formatting of unexpected arguments error
90d9c79348 file(MAKE_DIRECTORY): Do not make directories for command keywords

Acked-by: Kitware Robot <[email protected]>
Merge-request: !10467
Brad King 8 months ago
parent
commit
f284aa0e29

+ 2 - 4
Source/cmFileCommand.cxx

@@ -908,7 +908,7 @@ bool HandleMakeDirectoryCommand(std::vector<std::string> const& args,
         cmMakeRange(cm::begin(unparsedArguments), cm::end(unparsedArguments)),
         "\n");
       status.SetError("MAKE_DIRECTORY called with unexpected\n"
-                      "arguments:\n" +
+                      "arguments:\n  " +
                       unexpectedArgsStr);
       return false;
     }
@@ -919,9 +919,7 @@ bool HandleMakeDirectoryCommand(std::vector<std::string> const& args,
   }
 
   std::string expr;
-  for (std::string const& arg :
-       cmMakeRange(args).advance(1)) // Get rid of subcommand
-  {
+  for (std::string const& arg : argsRange) {
     const std::string* cdir = &arg;
     if (!cmsys::SystemTools::FileIsFullPath(arg)) {
       expr =

+ 1 - 0
Tests/RunCMake/file-MAKE_DIRECTORY/MAKE_DIRECTORY-after-RESULT-result.txt

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

+ 8 - 0
Tests/RunCMake/file-MAKE_DIRECTORY/MAKE_DIRECTORY-after-RESULT-stderr.txt

@@ -0,0 +1,8 @@
+^CMake Error at [^
+]*/Tests/RunCMake/file-MAKE_DIRECTORY/MAKE_DIRECTORY-after-RESULT\.cmake:[0-9]+ \(file\):
+  file MAKE_DIRECTORY called with unexpected
+
+  arguments:
+
+    [^
+]*/Tests/RunCMake/file-MAKE_DIRECTORY/MAKE_DIRECTORY-after-RESULT-build/after$

+ 6 - 0
Tests/RunCMake/file-MAKE_DIRECTORY/MAKE_DIRECTORY-after-RESULT.cmake

@@ -0,0 +1,6 @@
+file(MAKE_DIRECTORY
+  "${CMAKE_CURRENT_BINARY_DIR}/before"
+  RESULT resultVal
+  "${CMAKE_CURRENT_BINARY_DIR}/after"
+)
+message(STATUS "Result=${resultVal}")

+ 1 - 0
Tests/RunCMake/file-MAKE_DIRECTORY/RunCMakeTest.cmake

@@ -5,3 +5,4 @@ run_cmake_script(MAKE_DIRECTORY-Result-one-dir-FAIL)
 run_cmake_script(MAKE_DIRECTORY-Result-one-dir-SUCCESS)
 run_cmake_script(MAKE_DIRECTORY-Result-many-dirs-FAIL)
 run_cmake_script(MAKE_DIRECTORY-Result-many-dirs-SUCCESS)
+run_cmake_script(MAKE_DIRECTORY-after-RESULT)