| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #ifdef _MSC_VER
- #pragma warning ( disable : 4786 )
- #endif
- #include "cmDSWMakefile.h"
- #include "cmDSPBuilder.h"
- #include "cmSystemTools.h"
- #include <iostream>
- #include <fstream>
- #include <windows.h>
- // virtual override, ouput the makefile
- void cmDSWMakefile::OutputDSWFile()
- {
- if(m_OutputDirectory == "")
- {
- // default to build in place
- m_OutputDirectory = m_cmHomeDirectory;
- }
- // If the output directory is not the m_cmHomeDirectory
- // then create it.
- if(m_OutputDirectory != m_cmHomeDirectory)
- {
- if(!cmSystemTools::MakeDirectory(m_OutputDirectory.c_str()))
- {
- MessageBox(0, "Error creating directory ", 0, MB_OK);
- MessageBox(0, m_OutputDirectory.c_str(), 0, MB_OK);
- }
- }
-
-
- std::string fname;
- fname = m_OutputDirectory;
- fname += "/";
- fname += this->m_LibraryName;
- fname += ".dsw";
- std::cerr << "writting dsw file " << fname.c_str() << std::endl;
- std::ofstream fout(fname.c_str());
- if(!fout)
- {
- std::cerr << "Error can not open " << fname.c_str() << " for write" << std::endl;
- return;
- }
- this->WriteDSWFile(fout);
- }
- void cmDSWMakefile::WriteDSWFile(std::ostream& fout)
- {
- this->WriteDSWHeader(fout);
- for(std::vector<std::string>::iterator i = m_SubDirectories.begin();
- i != m_SubDirectories.end(); ++i)
- {
- const char* dir = (*i).c_str();
- std::vector<std::string> dspnames = this->CreateDSPFile(dir);
- std::cerr << "Create dsp for " << dspnames.size() << " number of dsp files in " << dir << std::endl;
- for(std::vector<std::string>::iterator si = dspnames.begin();
- si != dspnames.end(); ++si)
- {
- std::string dspname = *si;
- std::cerr << "Create dsp for " << (*si).c_str() << std::endl;
- if(dspname == "")
- {
- std::cerr << "Project name not found in " << dir << "/CMakeLists.txt" << std::endl;
- std::cerr << "Skipping Project " << std::endl;
- }
- else
- {
- std::string subdir = "./";
- subdir += dir;
- this->WriteProject(fout, dspname.c_str(), subdir.c_str());
- }
- }
- }
- this->WriteDSWFooter(fout);
- }
- std::vector<std::string> cmDSWMakefile::CreateDSPFile(const char* subdir)
- {
- #undef GetCurrentDirectory
- std::string currentDir = this->GetCurrentDirectory();
- currentDir += "/";
- currentDir += subdir;
- cmDSPBuilder dsp;
- dsp.SetOutputHomeDirectory(this->GetOutputDirectory());
- dsp.SetHomeDirectory(this->GetHomeDirectory());
- dsp.SetMakefileDirectory(currentDir.c_str());
- std::string outdir = m_OutputDirectory;
- outdir += "/";
- outdir += subdir;
- dsp.SetOutputDirectory(outdir.c_str());
- currentDir += "/";
- currentDir += "CMakeLists.txt";
- dsp.SetInputMakefilePath(currentDir.c_str());
- dsp.CreateDSPFile();
- return dsp.GetCreatedProjectNames();
- }
- void cmDSWMakefile::WriteProject(std::ostream& fout,
- const char* dspname,
- const char* dir)
- {
- fout << "###############################################################################\n\n";
- fout << "Project: \"" << dspname << "\"="
- << dir << "\\" << dspname << ".dsp - Package Owner=<4>\n\n";
- fout << "Package=<5>\n{{{\n}}}\n\n";
- fout << "Package=<4>\n";
- fout << "{{{\n";
- // insert Begin Project Dependency Project_Dep_Name project stuff here
- fout << "}}}\n\n";
- }
- void cmDSWMakefile::WriteDSWFooter(std::ostream& fout)
- {
- fout << "###############################################################################\n\n";
- fout << "Global:\n\n";
- fout << "Package=<5>\n{{{\n}}}\n\n";
- fout << "Package=<3>\n{{{\n}}}\n\n";
- fout << "###############################################################################\n\n";
- }
-
- void cmDSWMakefile::WriteDSWHeader(std::ostream& fout)
- {
- fout << "Microsoft Developer Studio Workspace File, Format Version 6.00\n";
- fout << "# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!\n\n";
- }
|