Установите целевые объекты по умолчанию для файла Makefile(GNU Make) с помощью переменной среды

#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. Удалил мой ответ, так как несколько целей . Цель по умолчанию недопустима.