VS10: stop build on custom command error (#11533)

In VS9 and previous versions, :VCReportError is the goto label
to jump to after a failed custom command. It stops the build
before it tries to go any further.

In VS10, :VCEnd is the correct label to use.

Create a method in the VS generators to provide the correct
line of script to use for each version of Visual Studio.

For more internal details, search for VCEnd in the
C:\Program Files\MSBuild directory.
This commit is contained in:
David Cole 2010-12-17 11:11:55 -05:00
parent d11c70295b
commit 66e7917532
4 changed files with 30 additions and 1 deletions

View File

@ -117,3 +117,9 @@ void cmLocalVisualStudio10Generator
"Stored GUID",
cmCacheManager::INTERNAL);
}
//----------------------------------------------------------------------------
std::string cmLocalVisualStudio10Generator::CheckForErrorLine()
{
return "if errorlevel 1 goto :VCEnd";
}

View File

@ -36,6 +36,10 @@ public:
virtual void Generate();
virtual void ReadAndStoreExternalGUID(const char* name,
const char* path);
protected:
virtual std::string CheckForErrorLine();
private:
};
#endif

View File

@ -148,6 +148,18 @@ void cmLocalVisualStudioGenerator::ComputeObjectNameRequirements
this->InsertNeedObjectNames(sourceGroups, objectNameCounts);
}
//----------------------------------------------------------------------------
std::string cmLocalVisualStudioGenerator::CheckForErrorLine()
{
return "if errorlevel 1 goto :VCReportError";
}
//----------------------------------------------------------------------------
std::string cmLocalVisualStudioGenerator::GetCheckForErrorLine()
{
return this->CheckForErrorLine();
}
//----------------------------------------------------------------------------
std::string
cmLocalVisualStudioGenerator
@ -237,7 +249,7 @@ cmLocalVisualStudioGenerator
// sequence.
//
script += newline_text;
script += "if errorlevel 1 goto VCReportError";
script += this->GetCheckForErrorLine();
}
return script;

View File

@ -30,6 +30,7 @@ class cmLocalVisualStudioGenerator : public cmLocalGenerator
public:
cmLocalVisualStudioGenerator();
virtual ~cmLocalVisualStudioGenerator();
/** Construct a script from the given list of command lines. */
std::string ConstructScript(const cmCustomCommandLines& commandLines,
const char* workingDirectory,
@ -38,7 +39,13 @@ public:
bool escapeAllowMakeVars,
const char* newline = "\n");
/** Line of batch file text that skips to the end after
* a failed step in a sequence of custom commands.
*/
std::string GetCheckForErrorLine();
protected:
virtual std::string CheckForErrorLine();
/** Construct a custom command to make exe import lib dir. */
cmsys::auto_ptr<cmCustomCommand>