Browse Source

ENH: clean up of INCLUDE_EXTERNAL_MSPROJECT contributed by Clinton Stimpson

Bill Hoffman 21 years ago
parent
commit
5001eed8a5

+ 3 - 7
Source/cmGlobalVisualStudio6Generator.cxx

@@ -289,13 +289,9 @@ void cmGlobalVisualStudio6Generator::WriteDSWFile(std::ostream& fout,
       if (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) == 0)
         {
         cmCustomCommand cc = l->second.GetPostBuildCommands()[0];
-        
-        // dodgy use of the cmCustomCommand's members to store the 
-        // arguments from the INCLUDE_EXTERNAL_MSPROJECT command
-        std::vector<std::string> stuff = cc.GetDepends();
-        std::vector<std::string> depends;
-        depends.push_back(cc.GetOutput());
-        this->WriteExternalProject(fout, stuff[0].c_str(), stuff[1].c_str(), depends);
+        std::string project = cc.GetCommand();
+        std::string location = cc.GetArguments();
+        this->WriteExternalProject(fout, project.c_str(), location.c_str(), cc.GetDepends());
         }
       else 
         {

+ 15 - 11
Source/cmGlobalVisualStudio71Generator.cxx

@@ -121,13 +121,10 @@ void cmGlobalVisualStudio71Generator::WriteSLNFile(std::ostream& fout,
         {
         cmCustomCommand cc = l->second.GetPostBuildCommands()[0];
         
-        // dodgy use of the cmCustomCommand's members to store the 
-        // arguments from the INCLUDE_EXTERNAL_MSPROJECT command
-        std::vector<std::string> stuff = cc.GetDepends();
-        std::vector<std::string> depends;
-        depends.push_back(cc.GetOutput());
-        this->WriteExternalProject(fout, stuff[0].c_str(), 
-                                   stuff[1].c_str(), depends);
+        std::string project = cc.GetCommand();
+        std::string location = cc.GetArguments();
+        this->WriteExternalProject(fout, project.c_str(), 
+                                   location.c_str(), cc.GetDepends());
         }
       else 
         {
@@ -207,10 +204,9 @@ void cmGlobalVisualStudio71Generator::WriteSLNFile(std::ostream& fout,
       if (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) == 0)
         {
         cmCustomCommand cc = l->second.GetPostBuildCommands()[0];
-        // dodgy use of the cmCustomCommand's members to store the 
-        // arguments from the INCLUDE_EXTERNAL_MSPROJECT command
-        std::vector<std::string> stuff = cc.GetDepends();
-        this->WriteProjectConfigurations(fout, stuff[0].c_str(), l->second.IsInAll());
+        std::string project = cc.GetCommand();
+
+        this->WriteProjectConfigurations(fout, project.c_str(), l->second.IsInAll());
         }
       else if ((l->second.GetType() != cmTarget::INSTALL_FILES)
                && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS))
@@ -291,7 +287,15 @@ void cmGlobalVisualStudio71Generator::WriteProjectDepends(std::ostream& fout,
       {
       std::string name = i->c_str();
       if(strncmp(name.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) == 0)
+        {
+        // kind of weird removing the first 27 letters.
+        // my recommendatsions:
+        // use cmCustomCommand::GetCommand() to get the project name
+        // or get rid of the target name starting with "INCLUDE_EXTERNAL_MSPROJECT_" and use another 
+        // indicator/flag somewhere.  These external project names shouldn't conflict with cmake 
+        // target names anyways.
         name.erase(name.begin(), name.begin() + 27);
+        }
       fout << "\t\t{" << this->GetGUID(name.c_str()) << "} = {"
            << this->GetGUID(name.c_str()) << "}\n";
       }

+ 6 - 11
Source/cmGlobalVisualStudio7Generator.cxx

@@ -392,13 +392,10 @@ void cmGlobalVisualStudio7Generator::WriteSLNFile(std::ostream& fout,
         {
         cmCustomCommand cc = l->second.GetPostBuildCommands()[0];
         
-        // dodgy use of the cmCustomCommand's members to store the 
-        // arguments from the INCLUDE_EXTERNAL_MSPROJECT command
-        std::vector<std::string> stuff = cc.GetDepends();
-        std::vector<std::string> depends;
-        depends.push_back(cc.GetOutput());
-        this->WriteExternalProject(fout, stuff[0].c_str(), 
-                                   stuff[1].c_str(), depends);
+        std::string project_name = cc.GetCommand();
+        std::string location = cc.GetArguments();
+        this->WriteExternalProject(fout, project_name.c_str(), 
+                                   location.c_str(), cc.GetDepends());
         }
       else 
         {
@@ -481,10 +478,8 @@ void cmGlobalVisualStudio7Generator::WriteSLNFile(std::ostream& fout,
        if (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) == 0)
          {
          cmCustomCommand cc = l->second.GetPostBuildCommands()[0];
-         // dodgy use of the cmCustomCommand's members to store the 
-         // arguments from the INCLUDE_EXTERNAL_MSPROJECT command
-         std::vector<std::string> stuff = cc.GetDepends();
-         this->WriteProjectConfigurations(fout, stuff[0].c_str(), l->second.IsInAll());
+         std::string project = cc.GetCommand();
+         this->WriteProjectConfigurations(fout, project.c_str(), l->second.IsInAll());
          }
        else if ((l->second.GetType() != cmTarget::INSTALL_FILES)
                 && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS))

+ 2 - 6
Source/cmIncludeExternalMSProjectCommand.cxx

@@ -30,10 +30,6 @@ bool cmIncludeExternalMSProjectCommand::InitialPass(std::vector<std::string> con
     {
     std::string location = args[1];
     
-    std::vector<std::string> name_and_location;
-    name_and_location.push_back(args[0]);
-    name_and_location.push_back(location);
-    
     std::vector<std::string> depends;
     if (args.size() > 2)
       {
@@ -47,8 +43,8 @@ bool cmIncludeExternalMSProjectCommand::InitialPass(std::vector<std::string> con
     utility_name += "_";
     utility_name += args[0];
     
-    m_Makefile->AddUtilityCommand(utility_name.c_str(), "echo", "\"Include external project\"",
-                                  true, name_and_location, depends);
+    m_Makefile->AddUtilityCommand(utility_name.c_str(), args[0].c_str(), args[1].c_str(),
+                                  true, depends);
     
     }
 #endif

+ 3 - 3
Source/cmLocalVisualStudio7Generator.cxx

@@ -1285,10 +1285,10 @@ void cmLocalVisualStudio7Generator::ConfigureFinalPass()
   for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++)
     {
     if (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) == 0)
-      { 
+      {
       cmCustomCommand cc = l->second.GetPostBuildCommands()[0];
-      std::vector<std::string> stuff = cc.GetDepends();
-      gg->CreateGUID(stuff[0].c_str());
+      std::string project_name = cc.GetCommand();
+      gg->CreateGUID(project_name.c_str());
       }
     else
       {