| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- /*=========================================================================
- Program: Insight Segmentation & Registration Toolkit
- Module: $RCSfile$
- Language: C++
- Date: $Date$
- Version: $Revision$
- Copyright (c) 2002 Insight Consortium. All rights reserved.
- See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the above copyright notices for more information.
- =========================================================================*/
- #include "cmMSProjectGenerator.h"
- #include "cmDSWWriter.h"
- #include "cmDSPWriter.h"
- #include "cmCacheManager.h"
- cmMSProjectGenerator::cmMSProjectGenerator()
- {
- m_DSWWriter = 0;
- m_DSPWriter = 0;
- BuildDSWOn();
- }
- void cmMSProjectGenerator::GenerateMakefile()
- {
- this->EnableLanguage("CXX");
- if(m_BuildDSW)
- {
- delete m_DSWWriter;
- m_DSWWriter = 0;
- m_DSWWriter = new cmDSWWriter(m_Makefile);
- m_DSWWriter->OutputDSWFile();
- }
- else
- {
- delete m_DSPWriter;
- m_DSPWriter = 0;
- m_DSPWriter = new cmDSPWriter(m_Makefile);
- m_DSPWriter->OutputDSPFile();
- }
- }
- cmMSProjectGenerator::~cmMSProjectGenerator()
- {
- delete m_DSPWriter;
- delete m_DSWWriter;
- }
- void cmMSProjectGenerator::SetLocal(bool local)
- {
- m_BuildDSW = !local;
- }
- void cmMSProjectGenerator::EnableLanguage(const char*)
- {
- // now load the settings
- if(!m_Makefile->GetDefinition("CMAKE_ROOT"))
- {
- cmSystemTools::Error(
- "CMAKE_ROOT has not been defined, bad GUI or driver program");
- return;
- }
- if(!this->GetLanguageEnabled("CXX"))
- {
- std::string fpath =
- m_Makefile->GetDefinition("CMAKE_ROOT");
- fpath += "/Templates/CMakeWindowsSystemConfig.cmake";
- m_Makefile->ReadListFile(NULL,fpath.c_str());
- this->SetLanguageEnabled("CXX");
- }
- }
- int cmMSProjectGenerator::TryCompile(const char *srcdir,
- const char *bindir,
- const char *projectName)
- {
- // now build the test
- std::string makeCommand = m_Makefile->GetDefinition("CMAKE_MAKE_PROGRAM");
- if(makeCommand.size() == 0)
- {
- cmSystemTools::Error(
- "Generator cannot find the appropriate make command.");
- return 1;
- }
- makeCommand = cmSystemTools::ConvertToOutputPath(makeCommand.c_str());
- std::string lowerCaseCommand = makeCommand;
- cmSystemTools::LowerCase(lowerCaseCommand);
- /**
- * Run an executable command and put the stdout in output.
- */
- std::string output;
- std::string cwd = cmSystemTools::GetCurrentWorkingDirectory();
- cmSystemTools::ChangeDirectory(bindir);
- // if there are spaces in the makeCommand, assume a full path
- // and convert it to a path with no spaces in it as the
- // RunCommand does not like spaces
- #if defined(_WIN32) && !defined(__CYGWIN__)
- if(makeCommand.find(' ') != std::string::npos)
- {
- cmSystemTools::GetShortPath(makeCommand.c_str(), makeCommand);
- }
- #endif
- makeCommand += " ";
- makeCommand += projectName;
- makeCommand += ".dsw /MAKE \"ALL_BUILD - Debug\" /REBUILD";
-
- if (!cmSystemTools::RunCommand(makeCommand.c_str(), output))
- {
- cmSystemTools::Error("Generator: execution of msdev failed.");
- // return to the original directory
- cmSystemTools::ChangeDirectory(cwd.c_str());
- return 1;
- }
- cmSystemTools::ChangeDirectory(cwd.c_str());
- return 0;
- }
|