diff options
-rw-r--r-- | Source/cmGlobalVisualStudio6Generator.cxx | 49 | ||||
-rw-r--r-- | Source/cmGlobalVisualStudio6Generator.h | 7 | ||||
-rw-r--r-- | Source/cmGlobalVisualStudio7Generator.cxx | 41 | ||||
-rw-r--r-- | Source/cmGlobalVisualStudio7Generator.h | 7 |
4 files changed, 27 insertions, 77 deletions
diff --git a/Source/cmGlobalVisualStudio6Generator.cxx b/Source/cmGlobalVisualStudio6Generator.cxx index 917581c..f89a49c 100644 --- a/Source/cmGlobalVisualStudio6Generator.cxx +++ b/Source/cmGlobalVisualStudio6Generator.cxx @@ -67,23 +67,16 @@ void cmGlobalVisualStudio6Generator::GenerateConfigurations(cmMakefile* mf) } } -int cmGlobalVisualStudio6Generator::Build( - const char *, - const char *bindir, - const char *projectName, - const char *targetName, - std::string *output, - const char *makeCommandCSTR, - const char *config, - bool clean) +std::string cmGlobalVisualStudio6Generator::GenerateBuildCommand(const char* makeProgram, const char *projectName, const char *targetName, + const char* config) { // now build the test std::vector<std::string> mp; mp.push_back("[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\6.0\\Setup;VsCommonDir]/MSDev98/Bin"); cmSystemTools::ExpandRegistryValues(mp[0]); - std::string originalCommand = makeCommandCSTR; + std::string originalCommand = makeProgram; std::string makeCommand = - cmSystemTools::FindProgram(makeCommandCSTR, mp); + cmSystemTools::FindProgram(makeProgram, mp); if(makeCommand.size() == 0) { std::string e = "Generator cannot find Visual Studio 6 msdev program \""; @@ -91,15 +84,10 @@ int cmGlobalVisualStudio6Generator::Build( e += "\" specified by CMAKE_MAKE_PROGRAM cache entry. "; e += "Please fix the setting."; cmSystemTools::Error(e.c_str()); - return 1; + return ""; } makeCommand = cmSystemTools::ConvertToOutputPath(makeCommand.c_str()); - /** - * Run an executable command and put the stdout in 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 // RunSingleCommand does not like spaces @@ -112,6 +100,12 @@ int cmGlobalVisualStudio6Generator::Build( makeCommand += " "; makeCommand += projectName; makeCommand += ".dsw /MAKE \""; + bool clean = false; + if ( targetName && strcmp(targetName, "clean") == 0 ) + { + clean = true; + targetName = "ALL_BUILD"; + } if (targetName && strlen(targetName)) { makeCommand += targetName; @@ -131,30 +125,13 @@ int cmGlobalVisualStudio6Generator::Build( } if(clean) { - makeCommand += "\" /REBUILD"; + makeCommand += "\" /CLEAN"; } else { makeCommand += "\" /BUILD"; } - int retVal; - int timeout = cmGlobalGenerator::s_TryCompileTimeout; - if (!cmSystemTools::RunSingleCommand(makeCommand.c_str(), output, - &retVal, 0, false, timeout)) - { - std::string e = "Error executing make program \""; - e += originalCommand; - e += "\" specified by CMAKE_MAKE_PROGRAM cache entry. "; - e += "The command string used was \""; - e += makeCommand.c_str(); - e += "\"."; - cmSystemTools::Error(e.c_str()); - // return to the original directory - cmSystemTools::ChangeDirectory(cwd.c_str()); - return 1; - } - cmSystemTools::ChangeDirectory(cwd.c_str()); - return retVal; + return makeCommand; } ///! Create a local generator appropriate to this Global Generator diff --git a/Source/cmGlobalVisualStudio6Generator.h b/Source/cmGlobalVisualStudio6Generator.h index b31b3ca..3ff1141 100644 --- a/Source/cmGlobalVisualStudio6Generator.h +++ b/Source/cmGlobalVisualStudio6Generator.h @@ -54,11 +54,8 @@ public: * Try running cmake and building a file. This is used for dynalically * loaded commands, not as part of the usual build process. */ - virtual int Build(const char *srcdir, const char *bindir, - const char *projectName, const char *targetName, - std::string *output, - const char *makeProgram, - const char *config, bool clean); + virtual std::string GenerateBuildCommand(const char* makeProgram, + const char *projectName, const char *targetName, const char* config); /** * Generate the all required files for building this project/tree. This diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 5dbc678..9b3952e 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -43,28 +43,14 @@ void cmGlobalVisualStudio7Generator::EnableLanguage(std::vector<std::string>cons this->cmGlobalGenerator::EnableLanguage(lang, mf); } -int cmGlobalVisualStudio7Generator::Build( - const char *, - const char *bindir, - const char *projectName, - const char *targetName, - std::string *output, - const char *makeCommandCSTR, - const char *config, - bool clean) +std::string cmGlobalVisualStudio7Generator::GenerateBuildCommand(const char* makeProgram, const char *projectName, const char *targetName, const char* config) { // now build the test std::string makeCommand = - cmSystemTools::ConvertToOutputPath(makeCommandCSTR); + cmSystemTools::ConvertToOutputPath(makeProgram); std::string lowerCaseCommand = makeCommand; cmSystemTools::LowerCase(lowerCaseCommand); - /** - * Run an executable command and put the stdout in 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 // RunSingleCommand does not like spaces @@ -77,9 +63,15 @@ int cmGlobalVisualStudio7Generator::Build( makeCommand += " "; makeCommand += projectName; makeCommand += ".sln "; + bool clean = false; + if ( targetName && strcmp(targetName, "clean") == 0 ) + { + clean = true; + targetName = "ALL_BUILD"; + } if(clean) { - makeCommand += "/rebuild "; + makeCommand += "/clean"; } else { @@ -104,20 +96,7 @@ int cmGlobalVisualStudio7Generator::Build( { makeCommand += "ALL_BUILD"; } - - int retVal; - int timeout = cmGlobalGenerator::s_TryCompileTimeout; - if (!cmSystemTools::RunSingleCommand(makeCommand.c_str(), output, &retVal, - 0, false, timeout)) - { - cmSystemTools::Error("Generator: execution of devenv failed."); - // return to the original directory - cmSystemTools::ChangeDirectory(cwd.c_str()); - return 1; - } - *output += makeCommand; - cmSystemTools::ChangeDirectory(cwd.c_str()); - return retVal; + return makeCommand; } ///! Create a local generator appropriate to this Global Generator diff --git a/Source/cmGlobalVisualStudio7Generator.h b/Source/cmGlobalVisualStudio7Generator.h index dea1c15..7330a5f 100644 --- a/Source/cmGlobalVisualStudio7Generator.h +++ b/Source/cmGlobalVisualStudio7Generator.h @@ -53,11 +53,8 @@ public: * Try running cmake and building a file. This is used for dynalically * loaded commands, not as part of the usual build process. */ - virtual int Build(const char *srcdir, const char *bindir, - const char *projectName, const char *targetName, - std::string *output, - const char *makeProgram, - const char *config, bool clean); + virtual std::string GenerateBuildCommand(const char* makeProgram, + const char *projectName, const char *targetName, const char* config); /** * Generate the all required files for building this project/tree. This |