2008-11-25 5 views
2

У меня есть проект NMake на основе которой, в свою очередь вызывает жерех компилятор, который может бросить ошибку, которая NMake, кажется, признает:Обработка NMake ERRORLEVEL/Коды возврата

NMAKE : fatal error U1077: 'C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler.exe' : return code '0x1' 

Однако, когда я называю Nmake от в пакетном файле, переменная среды% ERRORLEVEL% остается установленным в нуле:

nmake /NOLOGO 
echo BUILD RETURNING: %ERRORLEVEL% 

Если я контролирую-с задачей NMake, я в конечном итоге получить ненулевую ERRORLEVEL (это значение 2), так что я предположение заключается в том, что я могу ловить ошибки в порядке, но nmake не пузырится над ненужным кодом выхода из своей задачи , Или, по крайней мере, я ошибаюсь. Любая помощь будет оценена по достоинству.

ответ

1

Первое, пожалуйста, напишите свой командный файл, чтобы мы могли видеть, как вы замаскируете ошибку.
Также прокомментируйте это сообщение, чтобы я мог прочитать его снова.
В качестве первого мерзавца, я предположил бы, что-то вроде:

nmakebatch.cmdобычных аргументов NMake, без/NOLOGO

@echo off 
rem Args[x]: nmake arguments 
echo.>> %~n0.log 
echo %date% %time%>> %~n0.log 
echo nmake /NOLOGO %*>> %~n0.log 
nmake /NOLOGO %* 
echo %errorlevel%>> %~n0.log 

Является начало для захвата всех ситуаций, в инкрементирования log, при строительстве.

0

Вы должны использовать exit /b %errorlevel% в своем тестовом скрипте, это передаст код возврата обратно в nmake