How can I affect PATH in a makefile variable? Why is my example not working?
Question
At the beginning of a makefile I have this line :
PATH := $(PATH):/other/dir
and this gives this error: Recursive variable 'PATH' references itself
. What do I have to do so it works?
Solution
GNU make (and many others) has two main ways of assigning values to variables. They differ according to the operator which you use. According to the documentation, a single equals sign (=
) will cause a recursive expansion of the value, whereas a colon-equals (:=
) will cause a simple expansion.
Your quoted code uses a :=
and so should cause a simple expansion. What you are seeing is an error message associated with a recursive expansion. I would expect that sort of error if you had something like this:
PATH = $(PATH):/other/dir
Could the error be being caused by a different line in your makefile which you haven't quoted? If you're sure that your cut-and-pasting is correct, and that it is this line which is causing the problem, it would be helpful if we could see the whole, unedited makefile.
OTHER TIPS
Another possibility is to use the shell function:
PATH = $(shell printenv PATH):/other/dir
try changing $(PATH) to ${PATH}