Я пытаюсь включить некоторые env vars в Makefile. Файл env выглядит так:
FOO=bar
BAZ=quux
Обратите внимание, что нет никаких ведущих export
к каждому env var. Если я добавлю ведущий export
и просто include
файл env в Makefile, все будет работать как надо. Но мне нужно, чтобы env vars sans лидировал export
. Это мешает мне просто использовать include envfile
в Makefile.
Я также попытался сделать что-то вроде этого:
sed '/^#/!s/^/export /' envfile > $(BUILDDIR)/env
include $(BUILDDIR)/env
Но, делая это, команда make выдает ошибку, потому что файл env не предназначен для включения.
environment-variables
make
Майкл Ирвин
источник
источник
Ответы:
Если вы используете gnu make, нужно включить
envfile
файл, а затем экспортировать список переменных, полученных из этого файла:источник
export $(shell...
линии. Мне просто нужнаinclude
линия.У меня была похожая проблема и я приземлился в этой теме. Другое возможное решение - просто выполнить команду make export без каких-либо аргументов:
Это будет экспортировать все переменные make как переменные окружения. Такое поведение может соответствовать или не соответствовать всем случаям использования, но оно работало для меня и не включало никаких сценариев сценариев оболочки.
источник
Сохраняет предварительно существующие вариации ENV
Бежать
источник
Вот элегантное решение, которое не импортирует Make vars, но устанавливает любые экспорты среды для подпроцессов оболочки. Лично я предпочитаю сохранять в своих профилях динамические скрипты.
Есть некоторые ошибки. К сожалению, ENV не работает, я думаю, что должно (но это проблема с Bash, а не с Make). Также это действительно требует другой строки, потому что интерпретатором оболочки по умолчанию для Make является / bin / sh.
С другой стороны, это также позволяет включать функции оболочки в сценарии Makefile, но только для сценариев рецепта. Я не знаю, как другие снаряды, кроме платы за проезд Баш. И там происходит немного больше. Я поместил тестовый файл в GIST .
Существует множество сложных сценариев оболочки. Мне нравится этот Q / A лучше всего для простых ответов.
источник
если ваше имя файла,
.makerc
то вы можете включить его в Makefile так просто:Я предпочитаю добавлять
-
знак раньшеinclude
, чтобы подавить любые предупреждения.источник