Добавление каталога в PATH через Makefile

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

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

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

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

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

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

3 ответа

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

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

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

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

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

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

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

install_hint:
    @echo "Execute this command at your shell prompt:"
    @echo "export PATH=$(shell pwd)/bin:\$$PATH"
Другие вопросы по тегам