2015-05-18 2 views
1

Есть ли простой способ автоматической загрузки файла, содержащего локальные конфигурации, в Makefile?Загрузить .env файл в Makefile

У меня есть файл, .env, содержащий key=value пары в каждой строке:

var1=val1 
var2=val2 

В настоящее время я импортирующей каждую переменную в мой Makefile вручную, как это:

var1=$$(grep '^var1=' .env | cut -d= -f2-) 

Это чувствует себя неуклюжим и склонным к ошибкам при добавлении дополнительных переменных.

Я также попытался добавить дополнительную цель в Makefile читать каждую строку .env и передать его export, но значения экспортируемых в одной цели, не доступны для других.

Я ожидаю, что есть встроенная функция для этого в make, но я не смог найти документацию для нее.

+1

Включает ли 'include' то, что вы хотите здесь? Нужны ли эти значения для экспорта именно тем процессам, которые выполняются? –

+0

@ EtanReisner yep, include работает отлично - спасибо! Вероятно, я должен был найти это в документах !! Добавьте это как ответ, и я с радостью приму это. – Armand

+0

Из [docs] (https://www.gnu.org/software/make/manual/html_node/Include.html) 'Один раз для использования include-директив является то, когда требуется несколько программ, обрабатываемых отдельными make-файлами в разных каталогах использовать общий набор определений переменных (см. раздел «Настройка переменных») или шаблонов (см. Определение и переопределение правил шаблонов). – Armand

ответ

3

Предполагая, что ваш файл include состоит из действительных заданий, то include directive, скорее всего, вы хотите здесь.

Директива include указывает make приостановить чтение текущего файла makefile и прочитать один или несколько других файлов make-файлов перед продолжением. Директива - это строка в make-файле, которая выглядит так:

include filenames… 

имена файлов могут содержать шаблоны имен файлов оболочки.

Смежные вопросы