Browse Source

BUG: fix for 871, include external should work for 7.1 and 7.0

Bill Hoffman 21 years ago
parent
commit
8d1a5c48e7

+ 3 - 3
Source/cmGlobalVisualStudio71Generator.cxx

@@ -80,7 +80,7 @@ void cmGlobalVisualStudio71Generator::WriteSLNFile(std::ostream& fout,
     cmTargets &tgts = generators[i]->GetMakefile()->GetTargets();
     cmTargets::iterator l = tgts.begin();
     for(std::vector<std::string>::iterator si = dspnames.begin(); 
-        l != tgts.end(); ++l)
+        l != tgts.end() && si != dspnames.end(); ++l)
       {
       // special handling for the current makefile
       if(mf == generators[0]->GetMakefile())
@@ -118,7 +118,7 @@ void cmGlobalVisualStudio71Generator::WriteSLNFile(std::ostream& fout,
       // Write the project into the SLN file
       if (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) == 0)
         {
-        cmCustomCommand cc = l->second.GetPreLinkCommands()[0];
+        cmCustomCommand cc = l->second.GetPostBuildCommands()[0];
         
         // dodgy use of the cmCustomCommand's members to store the 
         // arguments from the INCLUDE_EXTERNAL_MSPROJECT command
@@ -202,7 +202,7 @@ void cmGlobalVisualStudio71Generator::WriteSLNFile(std::ostream& fout,
     cmTargets::iterator l = tgts.begin();
     std::string dir = mf->GetStartDirectory();
     for(std::vector<std::string>::iterator si = dspnames.begin(); 
-        l != tgts.end(); ++l)
+        l != tgts.end() && si != dspnames.end(); ++l)
       {
       if ((l->second.GetType() != cmTarget::INSTALL_FILES)
           && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS))

+ 10 - 1
Source/cmLocalVisualStudio7Generator.cxx

@@ -1238,7 +1238,16 @@ void cmLocalVisualStudio7Generator::ConfigureFinalPass()
     static_cast<cmGlobalVisualStudio7Generator *>(m_GlobalGenerator);
   for(cmTargets::iterator l = tgts.begin(); l != tgts.end(); l++)
     {
-    gg->CreateGUID(l->first.c_str());
+    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());
+      }
+    else
+      {
+      gg->CreateGUID(l->first.c_str()); 
+      }
     }
   
 }