diff options
-rw-r--r-- | Source/cmGlobalVisualStudio71Generator.cxx | 19 | ||||
-rw-r--r-- | Source/cmGlobalVisualStudio7Generator.cxx | 36 | ||||
-rw-r--r-- | Source/cmIncludeExternalMSProjectCommand.cxx | 2 |
3 files changed, 48 insertions, 9 deletions
diff --git a/Source/cmGlobalVisualStudio71Generator.cxx b/Source/cmGlobalVisualStudio71Generator.cxx index a65fc67..6867519 100644 --- a/Source/cmGlobalVisualStudio71Generator.cxx +++ b/Source/cmGlobalVisualStudio71Generator.cxx @@ -204,8 +204,16 @@ void cmGlobalVisualStudio71Generator::WriteSLNFile(std::ostream& fout, for(std::vector<std::string>::iterator si = dspnames.begin(); l != tgts.end() && si != dspnames.end(); ++l) { - if ((l->second.GetType() != cmTarget::INSTALL_FILES) - && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS)) + 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()); + } + else if ((l->second.GetType() != cmTarget::INSTALL_FILES) + && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS)) { this->WriteProjectConfigurations(fout, si->c_str(), l->second.IsInAll()); ++si; @@ -281,8 +289,11 @@ void cmGlobalVisualStudio71Generator::WriteProjectDepends(std::ostream& fout, { if(*i != dspname) { - fout << "\t\t{" << this->GetGUID(i->c_str()) << "} = {" - << this->GetGUID(i->c_str()) << "}\n"; + std::string name = i->c_str(); + if(strncmp(name.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) == 0) + name.erase(name.begin(), name.begin() + 27); + fout << "\t\t{" << this->GetGUID(name.c_str()) << "} = {" + << this->GetGUID(name.c_str()) << "}\n"; } } } diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 97fef56..cda991b 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -477,8 +477,16 @@ void cmGlobalVisualStudio7Generator::WriteSLNFile(std::ostream& fout, for(std::vector<std::string>::iterator si = dspnames.begin(); l != tgts.end() && si != dspnames.end(); ++l) { - if ((l->second.GetType() != cmTarget::INSTALL_FILES) - && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS)) + 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()); + } + else if ((l->second.GetType() != cmTarget::INSTALL_FILES) + && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS)) { this->WriteProjectDepends(fout, si->c_str(), dir.c_str(),l->second); ++si; @@ -614,13 +622,33 @@ cmGlobalVisualStudio7Generator::WriteProjectConfigurations(std::ostream& fout, void cmGlobalVisualStudio7Generator::WriteExternalProject(std::ostream& fout, const char* name, const char* location, - const std::vector<std::string>& ) + const std::vector<std::string>& depends) { std::string d = cmSystemTools::ConvertToOutputPath(location); fout << "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"" << name << "\", \"" << d << "\", \"{" - << this->GetGUID(name) << "}\"\nEndProject\n"; + << this->GetGUID(name) + << "}\"\n"; + + if(!depends.empty()) + { + fout << "\tProjectSection(ProjectDependencies) = postProject\n"; + std::vector<std::string>::const_iterator it; + for(it = depends.begin(); it != depends.end(); ++it) + { + if(it->size() > 0) + { + fout << "\t\t{" + << this->GetGUID(it->c_str()) + << "} = {" + << this->GetGUID(it->c_str()) + << "}\n"; + } + } + fout << "\tEndProjectSection\n"; + } + fout << "EndProject\n"; } diff --git a/Source/cmIncludeExternalMSProjectCommand.cxx b/Source/cmIncludeExternalMSProjectCommand.cxx index 20a6d8e..8c00895 100644 --- a/Source/cmIncludeExternalMSProjectCommand.cxx +++ b/Source/cmIncludeExternalMSProjectCommand.cxx @@ -48,7 +48,7 @@ bool cmIncludeExternalMSProjectCommand::InitialPass(std::vector<std::string> con utility_name += args[0]; m_Makefile->AddUtilityCommand(utility_name.c_str(), "echo", "\"Include external project\"", - false, name_and_location, depends); + true, name_and_location, depends); } #endif |