Добавление каталога в PATH через Makefile - PullRequest
4 голосов
/ 18 апреля 2011

У меня возникли проблемы с экспортом ПУТИ, который я изменил в Makefile, в текущий Терминал. Я пытаюсь добавить в PATH папку bin внутри каталога Makefile.

Вот соответствующая полоса make-файла:

PATH := $(shell pwd)/bin:$(PATH)

install:
    mkdir -p ./bin 
    export PATH
    echo $(PATH)

Эхо печатает его правильно, но если я повторю эхо в терминале, PATH останется прежним.

Заранее спасибо за помощь.

Ответы [ 3 ]

5 голосов
/ 18 апреля 2011

Если вы используете GNU make, вам нужно явно export переменная PATH для среды для подпроцессов:

export PATH := $(shell pwd)/bin:$(PATH)

install:
    mkdir -p ./bin 
    export PATH
    echo $(PATH)
1 голос
/ 18 апреля 2011

То, что вы пытаетесь сделать, невозможно. Make работает в другом процессе, чем оболочка в вашем терминале. Изменения среды в процессе make не переносятся в оболочку.

Возможно, вы путаете эффект выражения export. export не экспортирует значения переменных из процесса make в оболочку. Вместо этого export помечает переменные, чтобы они передавались любым дочерним процессам make. Насколько я знаю, нет способа изменить среду родительского процесса (оболочка, в которой вы начали make, является родительским процессом процесса make).

Возможно, эти ответы сделают концепцию экспорта переменных в дочерние процессы немного понятнее.

0 голосов
/ 11 июня 2018

Возможно, вы можете положиться на пользователя, который сделает это за вас.Обратите внимание на цитату

install_hint:
    @echo "Execute this command at your shell prompt:"
    @echo "export PATH=$(shell pwd)/bin:\$$PATH"
...