2015-01-28 2 views
-1

Некоторые из моих переменных среды не отображаются, если я пытаюсь получить к ним доступ из файла makefile. Мое приложение создает переменную среды MACHTYPE со значением «DELLMACHINE». Я хочу напечатать это значение, используя команду echo в make-файлах. Вот кодЧтение значения переменных среды в make-файле

@echo $(MACHTYPE) 

После выполнения вышеуказанной команды отображается пустая строка.

Интересно, что другие переменные среды, такие как PATH, работают нормально, но MACHTYPE отображается как пустая строка. Кто-нибудь знает, почему это происходит?

+0

совет: в этих случаях я всегда использую параметр '--warn' make (short для' --warn-undefined-variables'). – bobbogo

ответ

2

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

Если вы хотите, чтобы переменная была добавлена ​​в среду и передана программам, вы должны указать export; запустить это в оболочке или добавить его в свой файл инициализации оболочки:

export MACHTYPE=DELLMACHINE 

или же вы можете сделать это в два этапа, если вы предпочитаете:

MACHTYPE=DELLMACHINE 

export MACHTYPE 

Затем запустите make, и вы увидите, настройки.

-1

make может передавать переменные из строки cmd.

Makefile

all: 
    @echo $(MACHTYPE) 

Затем запустите make MACHTYPE=DELLMACHINE.

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