在makefile的开头我有这一行:
PATH := $(PATH):/other/dir
,这会出现此错误:Recursive variable 'PATH' references itself
。我该怎么办呢?
答案 0 :(得分:31)
GNU make(和许多其他人)有两种主要的方法来为变量赋值。它们根据您使用的操作员而有所不同。根据{{3}},单个等号(=
)将导致值的递归扩展,而冒号等于(:=
)将导致简单扩展。
您引用的代码使用:=
,因此 会导致简单的扩展。您看到的是与递归扩展相关联的错误消息。如果您有这样的事情,我会期待那种错误:
PATH = $(PATH):/other/dir
错误是由您未引用的makefile中的其他行引起的?如果您确定剪切和粘贴是正确的,并且正是这条线导致了问题,那么如果我们能看到整个未经编辑的makefile就会有所帮助。
答案 1 :(得分:4)
另一种可能性是使用shell函数:
PATH = $(shell printenv PATH):/ other / dir
答案 2 :(得分:-5)
尝试将$(PATH)更改为$ {PATH}