Как я могу повлиять на PATH в переменной make файла? Почему мой пример не работает?
В начале make файла у меня есть эта строка:
PATH := $(PATH):/other/dir
и это дает эту ошибку: Recursive variable 'PATH' references itself. Что мне нужно сделать, чтобы он работал?
Ответ 1
GNU make (и многие другие) имеет два основных способа присвоения значений переменным. Они различаются в зависимости от оператора, который вы используете. Согласно документации, один знак равенства (=) приведет к рекурсивному расширению значения, тогда как двоеточие равно (:=) приведет к простому расширению.
В вашем цитируемом коде используется :=, и поэтому это должно привести к простому расширению. То, что вы видите, - это сообщение об ошибке, связанное с рекурсивным расширением. Я ожидал бы такую ошибку, если бы у вас было что-то вроде этого:
PATH = $(PATH):/other/dir
Может ли ошибка быть вызвана другой строкой в вашем файле makefile, который вы не цитировали? Если вы уверены, что ваше вырезание и вставка верны и что именно эта строка вызывает проблему, было бы полезно, если бы мы увидели весь незавершенный файл makefile.
Ответ 2
Другая возможность - использовать функцию оболочки: