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?

Was it helpful?

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}

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top