瀏覽代碼

Merge topic 'correct_list-presets_parsing'

45299a8f9b cmake: --list=presets=[type] doesn't generate incorrect warnings

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Merge-request: !7164
Brad King 3 年之前
父節點
當前提交
8e4af2cb30

+ 3 - 2
Source/cmakemain.cxx

@@ -308,10 +308,11 @@ int do_cmake(int ac, char const* const* av)
                        parsedArgs.emplace_back("--find-package");
                        return true;
                      } },
-    CommandArgument{ "--list-presets", CommandArgument::Values::Zero,
-                     [&](std::string const&) -> bool {
+    CommandArgument{ "--list-presets", CommandArgument::Values::ZeroOrOne,
+                     [&](std::string const& value) -> bool {
                        workingMode = cmake::HELP_MODE;
                        parsedArgs.emplace_back("--list-presets");
+                       parsedArgs.emplace_back(value);
                        return true;
                      } },
   };

+ 7 - 0
Tests/RunCMake/CMakePresets/ListConfigurePresetsWorkingDir-stdout.txt

@@ -0,0 +1,7 @@
+^Not searching for unused variables given on the command line\.
+Available configure presets:
+
+  "zzzzzz"       - Sleepy
+  "aaaaaaaa"     - Screaming
+  "mmmmmm"
+  "no-generator"$

+ 9 - 1
Tests/RunCMake/CMakePresets/RunCMakeTest.cmake

@@ -71,13 +71,18 @@ function(run_cmake_presets name)
     set(_unused_cli)
   endif()
 
+  set(_preset "--preset=${name}")
+  if(CMakePresets_NO_PRESET)
+    set(_preset)
+  endif()
+
   set(RunCMake_TEST_COMMAND ${CMAKE_COMMAND}
     ${_source_args}
     -DRunCMake_TEST=${name}
     -DRunCMake_GENERATOR=${RunCMake_GENERATOR}
     -DCMAKE_MAKE_PROGRAM=${RunCMake_MAKE_PROGRAM}
     ${_unused_cli}
-    --preset=${name}
+    ${_preset}
     ${ARGN}
     )
   run_cmake(${name})
@@ -288,7 +293,10 @@ run_cmake_presets(ListPresets --list-presets)
 set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/ListPresetsWorkingDir")
 set(RunCMake_TEST_NO_CLEAN 1)
 set(CMakePresets_NO_SOURCE_ARGS 1)
+set(CMakePresets_NO_PRESET 1)
 run_cmake_presets(ListPresetsWorkingDir --list-presets)
+run_cmake_presets(ListConfigurePresetsWorkingDir --list-presets=configure)
+unset(CMakePresets_NO_PRESET)
 unset(CMakePresets_NO_SOURCE_ARGS)
 unset(RunCMake_TEST_NO_CLEAN)
 unset(RunCMake_TEST_BINARY_DIR)