VS10: Enable using devenv as CMAKE_MAKE_PROGRAM (#11459)

If CMAKE_MAKE_PROGRAM is set to devenv, then GenerateBuildCommand
uses it just like we used to do for VS8 and VS9. Otherwise, it
still uses MSBuild.

This will let us run the CMake test suite through devenv and make
sure all the solution and project files we generate are load-able
and build-able by the VS 2010 IDE, not just MSBuild.

Inspired-By: Robert Lenhardt
This commit is contained in:
David Cole 2011-01-21 13:18:06 -05:00
parent 73827b9205
commit 2ca116189f
1 changed files with 10 additions and 5 deletions

View File

@ -114,18 +114,23 @@ std::string cmGlobalVisualStudio10Generator
::GenerateBuildCommand(const char* makeProgram, ::GenerateBuildCommand(const char* makeProgram,
const char *projectName, const char *projectName,
const char* additionalOptions, const char *targetName, const char* additionalOptions, const char *targetName,
const char* config, bool ignoreErrors, bool) const char* config, bool ignoreErrors, bool fast)
{ {
// Ingoring errors is not implemented in visual studio 6
(void) ignoreErrors;
// now build the test // now build the test
std::string makeCommand std::string makeCommand
= cmSystemTools::ConvertToOutputPath(makeProgram); = cmSystemTools::ConvertToOutputPath(makeProgram);
std::string lowerCaseCommand = makeCommand; std::string lowerCaseCommand = makeCommand;
cmSystemTools::LowerCase(lowerCaseCommand); cmSystemTools::LowerCase(lowerCaseCommand);
// If makeProgram is devenv, parent class knows how to generate command:
if (lowerCaseCommand.find("devenv") != std::string::npos)
{
return cmGlobalVisualStudio7Generator::GenerateBuildCommand(makeProgram,
projectName, additionalOptions, targetName, config, ignoreErrors, fast);
}
// Otherwise, assume MSBuild command line, and construct accordingly.
// if there are spaces in the makeCommand, assume a full path // if there are spaces in the makeCommand, assume a full path
// and convert it to a path with no spaces in it as the // and convert it to a path with no spaces in it as the
// RunSingleCommand does not like spaces // RunSingleCommand does not like spaces