Geo
Geo

Reputation: 96767

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

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

Answers (3)

J. A. Faucett
J. A. Faucett

Reputation: 410

Another possibility is to use the shell function:

PATH = $(shell printenv PATH):/other/dir

Upvotes: 10

Pablo
Pablo

Reputation: 1

try changing $(PATH) to ${PATH}

Upvotes: -8

Tim
Tim

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

Related Questions