From 234bae7a204cc23fa0d297d5ab90db7ecc54f6d4 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 11 Apr 2011 11:48:08 -0400 Subject: [PATCH] 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. --- Source/cmLocalVisualStudioGenerator.cxx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Source/cmLocalVisualStudioGenerator.cxx b/Source/cmLocalVisualStudioGenerator.cxx index f3936e172a..4390a08a7d 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 += "if %errlev% neq 0 goto "; + script += ":cmErrorLevel"; + script += newline; + script += "exit /b %1"; + script += newline; + script += ":cmDone"; + script += newline; + script += "if %errorlevel% neq 0 goto "; script += this->GetReportErrorLabel(); }