В оболочке, когда я вхожу
echo $demoPath
это печатает
/usr/local/demo
Как я могу получить значение этой переменной $demoPath
в make-файле?
Ответы:
Если вы экспортировали переменную среды:
export demoPath=/usr/local/demo
вы можете просто сослаться на него по имени в makefile
( make
импортирует все заданные вами переменные среды):
DEMOPATH = ${demoPath} # Or $(demoPath) if you prefer.
Если вы не экспортировали переменную среды, она будет недоступна, пока вы ее не экспортируете или если вы не передадите ее явно в командной строке:
make DEMOPATH="${demoPath}" …
Если вы используете производную C оболочки, замену setenv demoPath /usr/local/demo
для export
команды.
demoPath=/usr/local/demo make
. Вы можете проверить это и, возможно, обновить свой ответ. Ура!
для тех, кому нужен официальный документ, подтверждающий поведение
Переменные в make могут поступать из среды, в которой выполняется make. Каждая переменная среды, которую программа make видит при запуске, преобразуется в переменную make с тем же именем и значением. Однако явное присвоение в make-файле или с помощью аргумента команды отменяет среду. (Если указан флаг '-e', тогда значения из среды переопределяют назначения в make-файле.
https://www.gnu.org/software/make/manual/html_node/Environment.html