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

时间:2009-10-22 07:52:29

标签: path makefile

在makefile的开头我有这一行:

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

,这会出现此错误:Recursive variable 'PATH' references itself。我该怎么办呢?

3 个答案:

答案 0 :(得分:31)

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

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

PATH = $(PATH):/other/dir

错误是由您引用的makefile中的其他行引起的?如果您确定剪切和粘贴是正确的,并且正是这条线导致了问题,那么如果我们能看到整个未经编辑的makefile就会有所帮助。

答案 1 :(得分:4)

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

  

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

答案 2 :(得分:-5)

尝试将$(PATH)更改为$ {PATH}