[Comm] Re: Makefile HELP!
Dmytro O. Redchuk
=?iso-8859-1?q?dor_=CE=C1_ldc=2Enet?=
Пн Янв 24 11:55:51 MSK 2005
On Mon, Jan 24, 2005 at 09:07:32AM +0300, Vitaly Ostanin wrote:
>
> Dmytro O. Redchuk пишет:
> >Добрый день.
> >
> > Вот возник вопрос -- не могу справиться.
> >
> > Скажите, можно ли (хочу надеяться, что "да") в Makefile понять,
> > выполнялась ли какая-то определённая цель?
> >
> > Например:
> > 0 a_lot_of_files = foo moo bar
> > 1
> > 2 backup: $(a_lot_of_files)
> > 3 ifeq($(MAKECMDGOALS),check)
> > 4 # да нет, никаких бэкапов, мы только проверяем...
> > 5 esle
> > 6 # пум-пурум, пам-парам...
> > 7 endif
> > 8
> > 9 check: backup
> > 10 # а выполнялся ли backup?!
> > 11 # если ДА, то бэкаповых файлов НЕТ.
> > 12 # если НЕТ, то всё ОК.
> >
> >
> > Пробовал где-то в строке 4 писать что-то типа define NO_BACKUP, но
> > потом запроблемилось его проверить где-то в строке 10 (как ни пробовал,
> > не получается:)
> >
> > Можно, конечно, играться с переменной $?, но в ней может быть слишком
> > много всего, а мне нужно проверить только одну цель, например.
>
> Можно попробовать поиск вхождения этой цели в $?, ну и $^ может
> пригодиться.
Тут проблема в том, что переменные $?, $^ и иже с ними становятся
переменными *внутри* цели. А проверки ifeq () делаются на верхнем уровне,
гед эти переменные ещё не... Насколько я понял. А пытаться перекидывать
эти переменные в окружение показалось "кострубатым".
> В вашем случае можно указать зависимость бакапных файлов от
> исходных и не делать цели с циклическими зависимостями.
(Может, кому пригодится..)
Пока что больше всего нравится такое (Makefile получается более
читабельный):
check:
# check for backup files:
@$(MAKE) -q backup >/dev/null 2>&1 \
&& echo 'Backup files present.' \
|| echo 'Backup files NOT present.'
# check for filter files:
@$(MAKE) -q filters 2>/dev/null 2>&1 \
&& echo 'Filter files present.' \
|| echo 'Filter files NOT present.'
(Не пинайте за велосипед, плиз)
Хотя "академически" вопрос остался открыт -- можно ли красиво проверить,
выполнялась ли какая-то цель :-) Но занудствовать не буду, пока
остановлюсь, а там видно будет... Пусть подкорка ещё помолотит...
>
> <skipped/>
>
> --
> Regards, Vyt
> mailto: vyt на vzljot.ru
> JID: vyt на vzljot.ru
--
_,-=._ /|_/|
`-.} `=._,.-=-._., @ @._,
`._ _,-. ) _,.-'
` G.m-"^m`m' Dmytro O. Redchuk
Подробная информация о списке рассылки community