Как я могу повлиять на PATH в переменной makefile? Почему мой пример не работает? - PullRequest
17 голосов
/ 22 октября 2009

В начале make-файла у меня есть эта строка:

PATH := $(PATH):/other/dir

и это дает ошибку: Recursive variable 'PATH' references itself. Что мне нужно сделать, чтобы это работало?

Ответы [ 3 ]

31 голосов
/ 22 октября 2009

GNU make (и многие другие) имеют два основных способа присвоения значений переменным. Они отличаются в зависимости от оператора, которого вы используете. Согласно документации , один знак равенства (=) вызовет рекурсивное расширение значения, тогда как двоеточие (:=) вызовет простое расширение .

В указанном вами коде используется :=, поэтому должно вызвать простое расширение. То, что вы видите, - это сообщение об ошибке, связанное с рекурсивным расширением. Я бы ожидал такого рода ошибки, если бы у вас было что-то вроде этого:

PATH = $(PATH):/other/dir

Может ли ошибка быть вызвана другой строкой в ​​вашем make-файле, которую вы не указали в кавычках? Если вы уверены, что ваши вырезки и вставки верны, и что именно эта строка вызывает проблему, было бы полезно, если бы мы могли видеть весь неотредактированный make-файл.

5 голосов
/ 16 августа 2014

Другая возможность - использовать функцию оболочки:

PATH = $ (shell printenv PATH): / other / dir

0 голосов
/ 11 марта 2010

попробуйте изменить $ (PATH) на $ {PATH}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...