Reputation: 96767
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?
Upvotes: 27
Views: 21676
Reputation: 410
Another possibility is to use the shell function:
PATH = $(shell printenv PATH):/other/dir
Upvotes: 10
Reputation: 9259
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.
Upvotes: 50