فهرست منبع

cmLinkLibrariesCommand: Port away from cmCommand

Ref: #19499
Regina Pfeifer 6 سال پیش
والد
کامیت
83b3f76a3b
3فایلهای تغییر یافته به همراه14 افزوده شده و 43 حذف شده
  1. 1 2
      Source/cmCommands.cxx
  2. 11 12
      Source/cmLinkLibrariesCommand.cxx
  3. 2 29
      Source/cmLinkLibrariesCommand.h

+ 1 - 2
Source/cmCommands.cxx

@@ -282,8 +282,7 @@ void GetProjectCommands(cmState* state)
                            cmIncludeExternalMSProjectCommand);
   state->AddBuiltinCommand("install_programs", cmInstallProgramsCommand);
   state->AddBuiltinCommand("add_link_options", cmAddLinkOptionsCommand);
-  state->AddBuiltinCommand("link_libraries",
-                           cm::make_unique<cmLinkLibrariesCommand>());
+  state->AddBuiltinCommand("link_libraries", cmLinkLibrariesCommand);
   state->AddBuiltinCommand("target_link_options",
                            cm::make_unique<cmTargetLinkOptionsCommand>());
   state->AddBuiltinCommand("target_link_directories",

+ 11 - 12
Source/cmLinkLibrariesCommand.cxx

@@ -2,38 +2,37 @@
    file Copyright.txt or https://cmake.org/licensing for details.  */
 #include "cmLinkLibrariesCommand.h"
 
+#include "cmExecutionStatus.h"
 #include "cmMakefile.h"
 
-class cmExecutionStatus;
-
-// cmLinkLibrariesCommand
-bool cmLinkLibrariesCommand::InitialPass(std::vector<std::string> const& args,
-                                         cmExecutionStatus&)
+bool cmLinkLibrariesCommand(std::vector<std::string> const& args,
+                            cmExecutionStatus& status)
 {
   if (args.empty()) {
     return true;
   }
+  cmMakefile& mf = status.GetMakefile();
   // add libraries, note that there is an optional prefix
   // of debug and optimized than can be used
   for (auto i = args.begin(); i != args.end(); ++i) {
     if (*i == "debug") {
       ++i;
       if (i == args.end()) {
-        this->SetError("The \"debug\" argument must be followed by "
-                       "a library");
+        status.SetError("The \"debug\" argument must be followed by "
+                        "a library");
         return false;
       }
-      this->Makefile->AppendProperty("LINK_LIBRARIES", "debug");
+      mf.AppendProperty("LINK_LIBRARIES", "debug");
     } else if (*i == "optimized") {
       ++i;
       if (i == args.end()) {
-        this->SetError("The \"optimized\" argument must be followed by "
-                       "a library");
+        status.SetError("The \"optimized\" argument must be followed by "
+                        "a library");
         return false;
       }
-      this->Makefile->AppendProperty("LINK_LIBRARIES", "optimized");
+      mf.AppendProperty("LINK_LIBRARIES", "optimized");
     }
-    this->Makefile->AppendProperty("LINK_LIBRARIES", i->c_str());
+    mf.AppendProperty("LINK_LIBRARIES", i->c_str());
   }
 
   return true;

+ 2 - 29
Source/cmLinkLibrariesCommand.h

@@ -8,36 +8,9 @@
 #include <string>
 #include <vector>
 
-#include "cm_memory.hxx"
-
-#include "cmCommand.h"
-
 class cmExecutionStatus;
 
-/** \class cmLinkLibrariesCommand
- * \brief Specify a list of libraries to link into executables.
- *
- * cmLinkLibrariesCommand is used to specify a list of libraries to link
- * into executable(s) or shared objects. The names of the libraries
- * should be those defined by the LIBRARY(library) command(s).
- */
-class cmLinkLibrariesCommand : public cmCommand
-{
-public:
-  /**
-   * This is a virtual constructor for the command.
-   */
-  std::unique_ptr<cmCommand> Clone() override
-  {
-    return cm::make_unique<cmLinkLibrariesCommand>();
-  }
-
-  /**
-   * This is called when the command is first encountered in
-   * the CMakeLists.txt file.
-   */
-  bool InitialPass(std::vector<std::string> const& args,
-                   cmExecutionStatus& status) override;
-};
+bool cmLinkLibrariesCommand(std::vector<std::string> const& args,
+                            cmExecutionStatus& status);
 
 #endif