diff options
author | Phil Pritchett <p.pritchett@2d3.com> | 2001-10-31 12:03:32 (GMT) |
---|---|---|
committer | Phil Pritchett <p.pritchett@2d3.com> | 2001-10-31 12:03:32 (GMT) |
commit | 4ba36ca453792be53916d29ee056f94232fd85f7 (patch) | |
tree | 945337627151687961e96d5f7c556ec2712faa1c /Source/cmDSWWriter.cxx | |
parent | 4a8b9ecf98d33b891f83dd75b2158f50a2d8dcb1 (diff) | |
download | CMake-4ba36ca453792be53916d29ee056f94232fd85f7.zip CMake-4ba36ca453792be53916d29ee056f94232fd85f7.tar.gz CMake-4ba36ca453792be53916d29ee056f94232fd85f7.tar.bz2 |
INCLUDE_EXTERNAL_MSPROJECT command
Diffstat (limited to 'Source/cmDSWWriter.cxx')
-rw-r--r-- | Source/cmDSWWriter.cxx | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/Source/cmDSWWriter.cxx b/Source/cmDSWWriter.cxx index 378a3e2..07ad24d 100644 --- a/Source/cmDSWWriter.cxx +++ b/Source/cmDSWWriter.cxx @@ -172,7 +172,18 @@ void cmDSWWriter::WriteDSWFile(std::ostream& fout) } } // Write the project into the DSW file - if ((l->second.GetType() != cmTarget::INSTALL_FILES) + if (l->first == "INCLUDE_EXTERNAL_MSPROJECT") + { + cmCustomCommand cc = l->second.GetCustomCommands()[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 = cc.GetOutputs(); + this->WriteExternalProject(fout, stuff[0].c_str(), stuff[1].c_str(), depends); + ++si; + } + else if ((l->second.GetType() != cmTarget::INSTALL_FILES) && (l->second.GetType() != cmTarget::INSTALL_PROGRAMS)) { this->WriteProject(fout, si->c_str(), dir.c_str(), @@ -186,6 +197,7 @@ void cmDSWWriter::WriteDSWFile(std::ostream& fout) delete mf; } } + // Write the footer for the DSW file this->WriteDSWFooter(fout); } @@ -248,6 +260,39 @@ void cmDSWWriter::WriteProject(std::ostream& fout, fout << "}}}\n\n"; } + +// Write a dsp file into the DSW file, +// Note, that dependencies from executables to +// the libraries it uses are also done here +void cmDSWWriter::WriteExternalProject(std::ostream& fout, + const char* name, + const char* location, + const std::vector<std::string>& dependencies) +{ + fout << "#########################################################" + "######################\n\n"; + fout << "Project: \"" << name << "\"=" + << location << " - Package Owner=<4>\n\n"; + fout << "Package=<5>\n{{{\n}}}\n\n"; + fout << "Package=<4>\n"; + fout << "{{{\n"; + + + std::vector<std::string>::const_iterator i, end; + // write dependencies. + i = dependencies.begin(); + end = dependencies.end(); + for(;i!= end; ++i) + { + fout << "Begin Project Dependency\n"; + fout << "Project_Dep_Name " << *i << "\n"; + fout << "End Project Dependency\n"; + } + fout << "}}}\n\n"; +} + + + // Standard end of dsw file void cmDSWWriter::WriteDSWFooter(std::ostream& fout) { |