diff options
-rw-r--r-- | Source/cmGlobalVisualStudio71Generator.cxx | 40 | ||||
-rw-r--r-- | Source/cmGlobalVisualStudio71Generator.h | 2 | ||||
-rw-r--r-- | Source/cmGlobalVisualStudio7Generator.cxx | 39 |
3 files changed, 59 insertions, 22 deletions
diff --git a/Source/cmGlobalVisualStudio71Generator.cxx b/Source/cmGlobalVisualStudio71Generator.cxx index 814a0a1..eee6a4b 100644 --- a/Source/cmGlobalVisualStudio71Generator.cxx +++ b/Source/cmGlobalVisualStudio71Generator.cxx @@ -302,6 +302,46 @@ void cmGlobalVisualStudio71Generator::WriteProjectDepends(std::ostream& fout, } } +// Write a dsp file into the SLN file, +// Note, that dependencies from executables to +// the libraries it uses are also done here +void cmGlobalVisualStudio71Generator::WriteExternalProject(std::ostream& fout, + const char* name, + const char* location, + const std::vector<std::string>& depends) +{ + std::string d = cmSystemTools::ConvertToOutputPath(location); + fout << "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"" + << name << "\", \"" + << d << "\", \"{" + << this->GetGUID(name) + << "}\"\n"; + + // write out the dependencies here + // VS 7.1 includes dependencies with the project instead of in the global section + 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"; + + +} + // Write a dsp file into the SLN file, // Note, that dependencies from executables to diff --git a/Source/cmGlobalVisualStudio71Generator.h b/Source/cmGlobalVisualStudio71Generator.h index 7c738c6..a5a47a8 100644 --- a/Source/cmGlobalVisualStudio71Generator.h +++ b/Source/cmGlobalVisualStudio71Generator.h @@ -53,6 +53,8 @@ protected: const char* name, const char* path, const cmTarget &t); virtual void WriteProjectConfigurations(std::ostream& fout, const char* name, bool in_all); + virtual void WriteExternalProject(std::ostream& fout, const char* name, const char* path, + const std::vector<std::string>& depends); virtual void WriteSLNFooter(std::ostream& fout); virtual void WriteSLNHeader(std::ostream& fout); }; diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 8f93d0e..ecad472 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -475,9 +475,22 @@ 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) - && (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) != 0) ) + if (strncmp(l->first.c_str(), "INCLUDE_EXTERNAL_MSPROJECT", 26) == 0) + { + cmCustomCommand cc = l->second.GetPostBuildCommands()[0]; + std::string name = cc.GetCommand(); + std::vector<std::string> depends = cc.GetDepends(); + std::vector<std::string>::iterator iter; + int depcount = 0; + for(iter = depends.begin(); iter != depends.end(); ++iter) + { + fout << "\t\t{" << this->GetGUID(name.c_str()) << "}." << depcount << " = {" + << this->GetGUID(iter->c_str()) << "}\n"; + depcount++; + } + } + 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; @@ -630,7 +643,7 @@ cmGlobalVisualStudio7Generator::WriteProjectConfigurations(std::ostream& fout, void cmGlobalVisualStudio7Generator::WriteExternalProject(std::ostream& fout, const char* name, const char* location, - const std::vector<std::string>& depends) + const std::vector<std::string>&) { std::string d = cmSystemTools::ConvertToOutputPath(location); fout << "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"" @@ -638,24 +651,6 @@ void cmGlobalVisualStudio7Generator::WriteExternalProject(std::ostream& fout, << d << "\", \"{" << 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"; } |