Как я могу повлиять на PATH в переменной make файла? Почему мой пример не работает?

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

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

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

Ответы

Ответ 1

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

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

PATH = $(PATH):/other/dir

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

Ответ 2

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

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

Ответ 3

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