Pārlūkot izejas kodu

cmSetTargetPropertiesCommand: Port away from cmCommand

Regina Pfeifer 6 gadi atpakaļ
vecāks
revīzija
42e413bcbb

+ 1 - 1
Source/cmCommands.cxx

@@ -242,7 +242,7 @@ void GetProjectCommands(cmState* state)
   state->AddBuiltinCommand("set_source_files_properties",
                            cmSetSourceFilesPropertiesCommand);
   state->AddBuiltinCommand("set_target_properties",
-                           cm::make_unique<cmSetTargetPropertiesCommand>());
+                           cmSetTargetPropertiesCommand);
   state->AddBuiltinCommand("set_tests_properties",
                            cmSetTestsPropertiesCommand);
   state->AddBuiltinCommand("subdirs", cmSubdirCommand);

+ 22 - 22
Source/cmSetTargetPropertiesCommand.cxx

@@ -5,31 +5,32 @@
 #include <iterator>
 
 #include "cmAlgorithms.h"
+#include "cmExecutionStatus.h"
 #include "cmMakefile.h"
 #include "cmStringAlgorithms.h"
 #include "cmTarget.h"
 
-class cmExecutionStatus;
+static bool SetOneTarget(const std::string& tname,
+                         std::vector<std::string>& propertyPairs,
+                         cmMakefile* mf);
 
-// cmSetTargetPropertiesCommand
-bool cmSetTargetPropertiesCommand::InitialPass(
-  std::vector<std::string> const& args, cmExecutionStatus&)
+bool cmSetTargetPropertiesCommand(std::vector<std::string> const& args,
+                                  cmExecutionStatus& status)
 {
   if (args.size() < 2) {
-    this->SetError("called with incorrect number of arguments");
+    status.SetError("called with incorrect number of arguments");
     return false;
   }
 
   // first collect up the list of files
   std::vector<std::string> propertyPairs;
   int numFiles = 0;
-  std::vector<std::string>::const_iterator j;
-  for (j = args.begin(); j != args.end(); ++j) {
+  for (auto j = args.begin(); j != args.end(); ++j) {
     if (*j == "PROPERTIES") {
       // now loop through the rest of the arguments, new style
       ++j;
       if (std::distance(j, args.end()) % 2 != 0) {
-        this->SetError("called with incorrect number of arguments.");
+        status.SetError("called with incorrect number of arguments.");
         return false;
       }
       cmAppend(propertyPairs, j, args.end());
@@ -38,33 +39,32 @@ bool cmSetTargetPropertiesCommand::InitialPass(
     numFiles++;
   }
   if (propertyPairs.empty()) {
-    this->SetError("called with illegal arguments, maybe missing "
-                   "a PROPERTIES specifier?");
+    status.SetError("called with illegal arguments, maybe missing "
+                    "a PROPERTIES specifier?");
     return false;
   }
 
+  cmMakefile& mf = status.GetMakefile();
+
   // now loop over all the targets
-  int i;
-  for (i = 0; i < numFiles; ++i) {
-    if (this->Makefile->IsAlias(args[i])) {
-      this->SetError("can not be used on an ALIAS target.");
+  for (int i = 0; i < numFiles; ++i) {
+    if (mf.IsAlias(args[i])) {
+      status.SetError("can not be used on an ALIAS target.");
       return false;
     }
-    bool ret = cmSetTargetPropertiesCommand::SetOneTarget(
-      args[i], propertyPairs, this->Makefile);
+    bool ret = SetOneTarget(args[i], propertyPairs, &mf);
     if (!ret) {
-      std::string message =
-        cmStrCat("Can not find target to add properties to: ", args[i]);
-      this->SetError(message);
+      status.SetError(
+        cmStrCat("Can not find target to add properties to: ", args[i]));
       return false;
     }
   }
   return true;
 }
 
-bool cmSetTargetPropertiesCommand::SetOneTarget(
-  const std::string& tname, std::vector<std::string>& propertyPairs,
-  cmMakefile* mf)
+static bool SetOneTarget(const std::string& tname,
+                         std::vector<std::string>& propertyPairs,
+                         cmMakefile* mf)
 {
   if (cmTarget* target = mf->FindTargetToUse(tname)) {
     // now loop through all the props and set them

+ 2 - 27
Source/cmSetTargetPropertiesCommand.h

@@ -8,34 +8,9 @@
 #include <string>
 #include <vector>
 
-#include <cm/memory>
-
-#include "cmCommand.h"
-
 class cmExecutionStatus;
-class cmMakefile;
-
-class cmSetTargetPropertiesCommand : public cmCommand
-{
-public:
-  std::unique_ptr<cmCommand> Clone() override
-  {
-    return cm::make_unique<cmSetTargetPropertiesCommand>();
-  }
-
-  /**
-   * This is called when the command is first encountered in
-   * the input file.
-   */
-  bool InitialPass(std::vector<std::string> const& args,
-                   cmExecutionStatus& status) override;
 
-  /**
-   *  Used by this command and cmSetPropertiesCommand
-   */
-  static bool SetOneTarget(const std::string& tname,
-                           std::vector<std::string>& propertyPairs,
-                           cmMakefile* mf);
-};
+bool cmSetTargetPropertiesCommand(std::vector<std::string> const& args,
+                                  cmExecutionStatus& status);
 
 #endif