Makefile и переменная target из командной строки - PullRequest
0 голосов
/ 08 июня 2018

Вопрос новичка для Makefiles ... почему это не работает?

TARGET=$@

$(TARGET): * **/*
    @echo "TARGET=$(TARGET)"

Где это работает?

TARGET=my_target

$(TARGET): * **/*
    @echo "TARGET=$(TARGET)"

При запуске с make my_target?

Результатом первого является «нет правила для создания цели« my_target ».»

В дополнение к вопросу «почему это не работает» есть ли обходной путь?Я хотел бы иметь возможность указать произвольную цель из командной строки.Я полагаю, что мог бы отреагировать на env var, но это делает CLI неуклюжим, например, make target=my_target build или подобным.

Я искал, но у меня нет правильных попаданий, чтобы решить эту проблему.GNU make 3.81.Спасибо!

1 Ответ

0 голосов
/ 08 июня 2018

Автоматическая переменная $@ определяется в контексте правила шаблона;вне какого-либо правила оно не имеет значения.

Если вы хотите, чтобы Make делала то же самое с независимо от того, какую цель вы называете, , вы можете использовать правило с любым соответствием:

%:
    @echo TARGET=$@
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...