在一个makefile的开头,我有这样一行:
PATH := $(PATH):/other/dir
然后出现了这个错误:Recursive variable 'PATH' references itself
。我该怎么做才能让它正常工作?
GNU make(以及许多其他工具)有两种主要的变量赋值方式,它们根据所使用的运算符而异。根据文档,单个等号(=
)将导致值的递归展开,而冒号等于(:=
)将导致简单展开。
您引用的代码使用了:=
,因此应该导致简单展开。您看到的是与递归展开相关的错误信息。如果您像这样编写代码,我会预期出现这种错误:
PATH = $(PATH):/other/dir
你的错误可能是由你没有引用的makefile中的另一行引起的。如果你确定你的复制和粘贴是正确的,并且这一行是导致问题的原因,那么如果我们能看到整个未编辑的makefile将会很有帮助。
PATH = $(shell printenv PATH):/other/dir
尝试将 $(PATH) 更改为 ${PATH}