Alex Rivera | Logout

How can I affect PATH in a makefile variable? Why is my example not working?

Asked 2009-10-22T07:52:28.553
28

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?

Edit
Report

1 Answer

52

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.

answered 2009-10-22T08:05:55.613

Your Answer