#makefile #gnu-make
#makefile #gnu-make
Вопрос:
У меня есть проект для компиляции с большим количеством makefiles, включая команду очистки. Вот почему мне всегда приходится начинать все сначала, если возникает ошибка (потому что команда очистки вызывается во многих Makefile)
Вопрос:
Есть ли какая-либо возможность указать make игнорировать команду очистки? В противном случае мне пришлось бы коснуться > 100 Make-файлов. Я хотел бы, чтобы make запускался с последней ошибкой, а не компилировал все выполненные материалы заново
Пример записей Makefile:
clean: cleansubdirs $(DIR) $(DIR1)
$(DIR2)
Комментарии:
1. Мне это кажется странным.
make
обычно не вызывает clean. Ее необходимо вызвать вручную. Вы уверены, что очистка вызывается при сбое?2. Очистка вызывается, если я снова запускаю make, потому что она установлена в makefiles
3. Начинать каждую сборку с «make clean» явно неправильно, и это должно быть исправлено как можно скорее. Написать более 100 подобных файлов — это за гранью добра и зла. Используйте shell / sed для пакетного редактирования и внимательно прочитайте пару книг о make, начиная с самого начала. Это единственный хороший совет, который вы можете получить.
4. Если вы покажете нам типичный makefile, возможно, мы сможем рассказать вам, как его модифицировать.
5. Покажите нам, как достигается
clean
цель, а не что она делает.
Ответ №1:
Можно переопределить рецепт явной цели вот так просто:
noclean.mk
clean:;
cleansubdirs:;
# more stuff...
Теперь запустите make -f Makefile -f noclean.mk
, и она будет работать без фактической очистки файлов. Однако make выдаст несколько предупреждений о «переопределении / игнорировании старых рецептов».