#gnu-make
Вопрос:
Я хотел бы установить цель(цели) по умолчанию для файла Makefile в значение переменной среды, разделенное пробелами.
Чтобы это решение работало правильно, я должен иметь возможность задать переменную среды, затем запустить make
и использовать целевые объекты (или, возможно, целевые объекты с разделителями пробелов), содержащиеся в переменной среды, так, как если бы они были переданы в качестве целевых объектов.
DEFAULT_TARGETS="target target2" make
# ... should produce the same result as ...
make target1 target2
Спасибо за помощь!
Ответ №1:
Вы можете сделать это, добавив что-то подобное в свой файл makefile:
ifneq ($(DEFAULT_TARGETS),)
__default_targets: $(DEFAULT_TARGETS)
.DEFAULT_GOAL = __default_targets
endif
Ответ №2:
Следуя указаниям @Andreas, я остановился на этом …
.PHONY: DEFAULT_TARGET
DEFAULT_TARGETS ?= intro
DEFAULT_TARGET: $(DEFAULT_TARGETS)
Это использует парадигму «Первая цель по умолчанию», затем расширяет содержимое DEFAULT_TARGETS
env-var для добавления реквизитов. Это также имеет то преимущество, что, если DEFAULT_TARGETS
переменная среды не задана, файл makefile будет использовать резервное значение, в данном случае это intro
.
В оболочке это выглядело бы так, DEFAULT_TARGETS="target target2" make
Комментарии:
1. Удалил мой ответ, так как несколько целей . Цель по умолчанию недопустима.