[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