LINUX.ORG.RU

Изначальный target в make


0

0

Подскажите, можно ли внутри Makefile обратиться к переменной, которая бы содержала target с которым запускался make? Суть в том, что зависимости не совсем очевидны и вычисляются достаточно сложно. А правила - неявные. В простых зависимостях все просто:

%.tg : %.dep

А если попробовать что-то вроде: %.tg : $(call makedep,%)

То вызов функции отрабатывает раньше чем подставляется "%".

Итак: есть ли в make автопеременная которая содержит target ДО ТОГО, как вычисляются переменные?


В уме созрел вариант попробовать правило "последнего шанса"

Что-то вроде %:: make PARAMETR=$@ $@ И все переменные вычислять через $(PARAMETR) Ещё не пробовал.

Может можно более красиво?

lga ()

Re: Изначальный target в make

> А если попробовать что-то вроде: %.tg : $(call makedep,%)
>

> То вызов функции отрабатывает раньше чем подставляется "%".


Возможно, я не понял задачу, но подозреваю, что если включить
`.SECONDEXPANSION:`, это можно будет переписать как
`%.tg: $$(call makedep,$$*)`, и всё будет работать как надо.

Sphinx ★★☆☆ ()
Ответ на: Re: Изначальный target в make от Sphinx

Очень похоже, что это то что нужно!

Спасибо! Пробовать буду в понедельник.....

А все потому, что мануалы надо читать в оригинале :) Может и раньше наткнулся бы, но читал на русском это:

http://linfoline.homedns.org/gnu-make-ru/gnu-make-ru.html

А тут этого нет. А в оригинале есть!

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.