#makefile #gnu-make
#makefile #gnu-make
Вопрос:
Я экспериментировал с Make-файлами, в частности с правилами Makefile, содержащими более одной цели
Рассмотрим этот Makefile:
x := $(MAKECMDGOALS)
y := Whatever
dummy $(y) $(x) :
@echo target: $@
Здесь простой make
вызов выводит target: dummy
, но make xyz
выводит target: xyz
. Почему это происходит? Есть ли что-то особенное в переменной MAKECMDGOALS? Почему переменная x обрабатывается «с большей важностью» по сравнению с y?
Ответ №1:
Почему это должно иметь какое-либо отношение к? MAKECMDGOALS
Это просто нормальное поведение.
Запустите этот makefile, который вообще не использует MAKECMDGOALS
переменные or, и вы увидите тот же результат:
dummy Whatever xyz:
@echo target: $@
Это потому, что целью по умолчанию для make, если вы не задаете никаких целей в командной строке, является первая, которая в данном случае является dummy
. Если вы задаете цель (например, make xyz
), то это цель, которая будет создана.
Комментарии:
1. Ах .. это имеет смысл. Я слишком много думал об этой проблеме