Quellcode durchsuchen

project: Do not issue CMP0048 warnings on injected call

Fixes: #18202
Brad King vor 7 Jahren
Ursprung
Commit
6646771b0f

+ 2 - 0
Source/cmMakefile.cxx

@@ -1511,6 +1511,8 @@ void cmMakefile::Configure()
       project.Name.Lower = "project";
       project.Name.Lower = "project";
       project.Arguments.emplace_back("Project", cmListFileArgument::Unquoted,
       project.Arguments.emplace_back("Project", cmListFileArgument::Unquoted,
                                      0);
                                      0);
+      project.Arguments.emplace_back("__CMAKE_INJECTED_PROJECT_COMMAND__",
+                                     cmListFileArgument::Unquoted, 0);
       listFile.Functions.insert(listFile.Functions.begin(), project);
       listFile.Functions.insert(listFile.Functions.begin(), project);
     }
     }
   }
   }

+ 7 - 2
Source/cmProjectCommand.cxx

@@ -69,6 +69,7 @@ bool cmProjectCommand::InitialPass(std::vector<std::string> const& args,
   bool haveLanguages = false;
   bool haveLanguages = false;
   bool haveDescription = false;
   bool haveDescription = false;
   bool haveHomepage = false;
   bool haveHomepage = false;
+  bool injectedProjectCommand = false;
   std::string version;
   std::string version;
   std::string description;
   std::string description;
   std::string homepage;
   std::string homepage;
@@ -160,6 +161,8 @@ bool cmProjectCommand::InitialPass(std::vector<std::string> const& args,
           "by a value that expanded to nothing.");
           "by a value that expanded to nothing.");
         resetReporter();
         resetReporter();
       };
       };
+    } else if (i == 1 && args[i] == "__CMAKE_INJECTED_PROJECT_COMMAND__") {
+      injectedProjectCommand = true;
     } else if (doing == DoingVersion) {
     } else if (doing == DoingVersion) {
       doing = DoingLanguages;
       doing = DoingLanguages;
       version = args[i];
       version = args[i];
@@ -280,8 +283,10 @@ bool cmProjectCommand::InitialPass(std::vector<std::string> const& args,
       const char* v = this->Makefile->GetDefinition(i);
       const char* v = this->Makefile->GetDefinition(i);
       if (v && *v) {
       if (v && *v) {
         if (cmp0048 == cmPolicies::WARN) {
         if (cmp0048 == cmPolicies::WARN) {
-          vw += "\n  ";
-          vw += i;
+          if (!injectedProjectCommand) {
+            vw += "\n  ";
+            vw += i;
+          }
         } else {
         } else {
           this->Makefile->AddDefinition(i, "");
           this->Makefile->AddDefinition(i, "");
         }
         }

+ 0 - 12
Tests/RunCMake/project_injected/CMP0048-WARN-stderr.txt

@@ -1,12 +0,0 @@
-^CMake Warning \(dev\) in CMakeLists.txt:
-  Policy CMP0048 is not set: project\(\) command manages VERSION variables.
-  Run "cmake --help-policy CMP0048" for policy details.  Use the cmake_policy
-  command to set the policy and suppress this warning.
-
-  The following variable\(s\) would be set to empty:
-
-    CMAKE_PROJECT_VERSION
-    CMAKE_PROJECT_VERSION_MAJOR
-    CMAKE_PROJECT_VERSION_MINOR
-    CMAKE_PROJECT_VERSION_PATCH
-This warning is for project developers.  Use -Wno-dev to suppress it.$