Команда $ make all
выдает ошибки, например, rm: cannot remove '.lambda': No such file or directory
поэтому останавливается. Я хочу, чтобы он игнорировал ошибки rm-not-found-errors. Как я могу заставить?
Makefile
all:
make clean
make .lambda
make .lambda_t
make .activity
make .activity_t_lambda
clean:
rm .lambda .lambda_t .activity .activity_t_lambda
.lambda:
awk '{printf "%.4f \n", log(2)/log(2.71828183)/$$1}' t_year > .lambda
.lambda_t:
paste .lambda t_year > .lambda_t
.activity:
awk '{printf "%.4f \n", $$1*2.71828183^(-$$1*$$2)}' .lambda_t > .activity
.activity_t_lambda:
paste .activity t_year .lambda | sed -e 's@\t@\t\&\t@g' -e 's@$$@\t\\\\@g' | tee > .activity_t_lambda > ../RESULTS/currentActivity.tex
rm -f
лучше для конкретной проблемы, с которой сталкивается пользователь, но все же хорошо знать об общем решении, даже если оно иногда небезопасно.$(RM)
, которые вы можете использовать вместоrm -f
.make -k
(или--keep-going
на gnumake), я думаю, сделает то, о чем вы просите.Вам действительно следует найти строку del или rm, которая дает сбой, и добавить
-f
к ней, чтобы эта ошибка не повторилась другим.источник
make
создать как можно больше единиц компиляции, пока вы исправляете то, что компилятор подавил. Таким образом, когда вы исправите все, что было сломано, вам не придется ждать, пока все остальное будет построено.Успешный возврат путем блокировки
rm
кода возврата за каналом с помощьюtrue
команды, которая всегда возвращает0
(успех)источник
rm file || true
. Этот способtrue
вызывается, еслиrm
возвращается код ошибки. Но любой вывод консолиrm
не проглатывается трубой.Изменить чистый на
Т.е. не запрашивать удаление; не жалуйтесь, если файл не существует.
источник
Чтобы заставить make действительно игнорировать ошибки в одной строке, вы можете просто добавить к нему суффикс
; true
, установив возвращаемое значение 0. Например:Это перенаправит вывод stderr на null, а после команды будет указано true (которое всегда возвращает 0, заставляя make полагать, что команда выполнена успешно, независимо от того, что на самом деле произошло), что позволяет продолжить выполнение программы.
источник
Поменяй,
clean
чтобrm
жаловаться не буду:источник
Поместите
-f
параметр в своюrm
команду.источник