diff options
author | Brad King <brad.king@kitware.com> | 2011-04-11 15:48:08 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2011-04-11 15:54:01 (GMT) |
commit | 234bae7a204cc23fa0d297d5ab90db7ecc54f6d4 (patch) | |
tree | 3a9da5ddced25e998dede2cddb74e4e698b904ae | |
parent | b98fdd52848b45f97f8a38eaa7749186f6c8fab3 (diff) | |
download | CMake-234bae7a204cc23fa0d297d5ab90db7ecc54f6d4.zip CMake-234bae7a204cc23fa0d297d5ab90db7ecc54f6d4.tar.gz CMake-234bae7a204cc23fa0d297d5ab90db7ecc54f6d4.tar.bz2 |
VS10: Fix exit code of custom commands with setlocal/endlocal (#11938)
Use the pattern
setlocal
...
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
in custom commands to preserve the %errorlevel% from inside the
setlocal/endlocal block.
-rw-r--r-- | Source/cmLocalVisualStudioGenerator.cxx | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/Source/cmLocalVisualStudioGenerator.cxx b/Source/cmLocalVisualStudioGenerator.cxx index f3936e1..4390a08 100644 --- a/Source/cmLocalVisualStudioGenerator.cxx +++ b/Source/cmLocalVisualStudioGenerator.cxx @@ -201,8 +201,6 @@ cmLocalVisualStudioGenerator { script += newline; newline = newline_text; - script += "set errlev="; - script += newline; script += "setlocal"; } @@ -267,9 +265,15 @@ cmLocalVisualStudioGenerator script += newline; script += ":cmEnd"; script += newline; - script += "endlocal & set errlev=%errorlevel%"; + script += "endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone"; + script += newline; + script += ":cmErrorLevel"; + script += newline; + script += "exit /b %1"; + script += newline; + script += ":cmDone"; script += newline; - script += "if %errlev% neq 0 goto "; + script += "if %errorlevel% neq 0 goto "; script += this->GetReportErrorLabel(); } |