2013-03-29 2 views
-1

Я использую Makefile для компиляции моего проекта. Я получаю до точки, которая:

$(MAKE) <some flags>; \ 
$(UPLOAD_SCRIPT) 

в $ (MAKE) линия на самом деле компилирует код, но я только хочу, чтобы сценарий загрузки, чтобы работать, если марка не была успешной (то есть без ошибок). Есть ли способ сделать это? Я представляю что-то с кодами выхода, сохраняя результат в переменной и оператором if, но я не очень хорошо знаком с Makefiles.

+0

Если вы используете GNU сделать, начните здесь: http://www.gnu.org/software/make/manual/make.html –

ответ

1

ЦЕПЬ 2 команды с использованием && как это вместо:

mytarget: 
    $(MAKE) <some flags> && $(UPLOAD_SCRIPT) 

Если у вас есть несколько строк, и не хотите, чтобы ваша линия выглядит очень долго с помощью &&, вы можете использовать set -e, так что оболочка останавливается при первой ошибке.

-e Когда эта опция включена, если простая команда не для какого-либо из причин, перечисленных в последствиях ошибок Shell или возвращает выездную значения состояния> 0, и не является частью соединения список, следующий за , пока, до или ключевое слово if, и не является частью списка AND или OR, и не является конвейером, которому предшествует! зарезервированное слово, то оболочка должна немедленно выйти.

mytarget: 
    set -e; \ 
    cmd1; \ 
    cmd2 
+0

Я рекомендую '' && решение. Использование 'set -e' сложно и часто не ведет себя так, как вы ожидаете, особенно если' cmd1' или 'cmd2' являются более сложными. Тем не менее, все будет хорошо работать для простых команд. – MadScientist

Смежные вопросы