Parcourir la source

cmake: Honor CMAKE_GENERATOR env var in --help output

Juan Ramos il y a 3 ans
Parent
commit
3c3bce133d

+ 1 - 1
Source/CursesDialog/ccmake.cxx

@@ -77,7 +77,7 @@ int main(int argc, char const* const* argv)
   cmDocumentation doc;
   doc.addCMakeStandardDocSections();
   if (doc.CheckOptions(argc, argv)) {
-    cmake hcm(cmake::RoleInternal, cmState::Unknown);
+    cmake hcm(cmake::RoleInternal, cmState::Help);
     hcm.SetHomeDirectory("");
     hcm.SetHomeOutputDirectory("");
     hcm.AddCMakePaths();

+ 1 - 1
Source/QtDialog/CMakeSetup.cxx

@@ -79,7 +79,7 @@ int main(int argc, char** argv)
   doc.addCMakeStandardDocSections();
   if (argc2 > 1 && doc.CheckOptions(argc2, argv2)) {
     // Construct and print requested documentation.
-    cmake hcm(cmake::RoleInternal, cmState::Unknown);
+    cmake hcm(cmake::RoleInternal, cmState::Help);
     hcm.SetHomeDirectory("");
     hcm.SetHomeOutputDirectory("");
     hcm.AddCMakePaths();

+ 2 - 0
Source/cmState.cxx

@@ -786,6 +786,8 @@ std::string cmState::ModeToString(cmState::Mode mode)
       return "CTEST";
     case CPack:
       return "CPACK";
+    case Help:
+      return "HELP";
     case Unknown:
       return "UNKNOWN";
   }

+ 1 - 0
Source/cmState.h

@@ -53,6 +53,7 @@ public:
     FindPackage,
     CTest,
     CPack,
+    Help
   };
 
   enum class ProjectKind

+ 1 - 1
Source/cmake.cxx

@@ -196,7 +196,7 @@ cmake::cmake(Role role, cmState::Mode mode, cmState::ProjectKind projectKind)
     this->AddProjectCommands();
   }
 
-  if (mode == cmState::Project) {
+  if (mode == cmState::Project || mode == cmState::Help) {
     this->LoadEnvironmentPresets();
   }
 

+ 1 - 1
Source/cmakemain.cxx

@@ -208,7 +208,7 @@ int do_cmake(int ac, char const* const* av)
   doc.addCMakeStandardDocSections();
   if (doc.CheckOptions(ac, av, "--")) {
     // Construct and print requested documentation.
-    cmake hcm(cmake::RoleInternal, cmState::Unknown);
+    cmake hcm(cmake::RoleInternal, cmState::Help);
     hcm.SetHomeDirectory("");
     hcm.SetHomeOutputDirectory("");
     hcm.AddCMakePaths();

+ 1 - 0
Tests/RunCMake/CommandLine/Envgen-bad-help-stderr.txt

@@ -0,0 +1 @@
+CMake Error: CMAKE_GENERATOR was set but the specified generator doesn't exist. Using CMake default.

+ 2 - 0
Tests/RunCMake/CommandLine/Envgen-bad-help-stdout.txt

@@ -0,0 +1,2 @@
+Generators.*
+\* (Unix Makefiles|Visual Studio).*

+ 1 - 0
Tests/RunCMake/CommandLine/Envgen-ninja-multi-help-stdout.txt

@@ -0,0 +1 @@
+\* Ninja Multi-Config[ ]+= Generates build-<Config>.ninja files.

+ 7 - 0
Tests/RunCMake/CommandLine/RunCMakeTest.cmake

@@ -349,6 +349,13 @@ function(run_EnvironmentGenerator)
   run_cmake_command(Envgen-bad ${CMAKE_COMMAND} -G)
   unset(ENV{CMAKE_GENERATOR})
 
+  # Honor CMAKE_GENERATOR env var in --help output
+  set(ENV{CMAKE_GENERATOR} "Ninja Multi-Config")
+  run_cmake_command(Envgen-ninja-multi-help ${CMAKE_COMMAND} --help)
+  set(ENV{CMAKE_GENERATOR} "NoSuchGenerator")
+  run_cmake_command(Envgen-bad-help ${CMAKE_COMMAND} --help)
+  unset(ENV{CMAKE_GENERATOR})
+
   if(RunCMake_GENERATOR MATCHES "Visual Studio.*")
     set(ENV{CMAKE_GENERATOR} "${RunCMake_GENERATOR}")
     run_cmake_command(Envgen ${CMAKE_COMMAND} ${source_dir})