如何影响makefile变量中的PATH?为什么我的例子不起作用?

Geo*_*Geo 18 makefile path

在makefile的开头我有这一行:

PATH := $(PATH):/other/dir
Run Code Online (Sandbox Code Playgroud)

这给出了这个错误:Recursive variable 'PATH' references itself.我该怎么办呢?

Tim*_*Tim 32

GNU make(和许多其他人)有两种主要的方法来为变量赋值.它们根据您使用的操作员而有所不同.根据文档,单个等号(=)将导致值的递归扩展,而冒号等于(:=)将导致简单的扩展.

您引用的代码使用a :=,因此应该导致简单的扩展.您看到的是与递归扩展相关联的错误消息.如果你有这样的事情我会期待那种错误:

PATH = $(PATH):/other/dir
Run Code Online (Sandbox Code Playgroud)

错误可能是由你没有引用的makefile中的另一行引起的吗?如果您确定剪切和粘贴是正确的,并且正是这条线导致了问题,那么如果我们能够看到整个未编辑的makefile将会很有帮助.


J. *_*ett 6

另一种可能性是使用shell函数:

路径= $(shell printenv路径):/ other / dir