在Makefile中导出变量
在makefile中导出变量时遇到问题。我在在Makefile中导出变量,makefile,Makefile,在makefile中导出变量时遇到问题。我在/home/user/sarwan/DMAgent目录中有Makefile.mk 我有以下声明: export VZW_BASE_DIR=$(PWD) 然后我在/home/user/sarwan/DMAgent/agent目录中有另一个makefile,其中包含: include ../Makefile.mk export VZW_BASE_DIR 问题是我希望VZW_BASE_DIR是/home/user/sarwan/DMAgent,而不是将其
/home/user/sarwan/DMAgent
目录中有Makefile.mk
我有以下声明:
export VZW_BASE_DIR=$(PWD)
然后我在/home/user/sarwan/DMAgent/agent
目录中有另一个makefile,其中包含:
include ../Makefile.mk
export VZW_BASE_DIR
问题是我希望VZW_BASE_DIR
是/home/user/sarwan/DMAgent
,而不是将其作为
/home/user/sarwan/DMAgent/agent
如何编写才能使其按预期工作?
PWD
提供您当前的工作目录,而不是当前包含的文件所在的目录。即使将文件包含在完全不同的目录中,您的工作目录也保持不变
由于您已经在对相对路径进行硬编码(请参见include
语句),因此我认为出于其他原因继续这样做没有问题。首先,生成目录中的makefile:
export REL_DIR=..
include $(REL_DIR)/Makefile.mk
然后,在包含的makefile中:
export VZW_BASE_DIR=$(PWD)/$(REL_DIR)
这将限制您必须对一个位置进行更改的范围,即设置
REL\u DIR
。然后,它使用该变量引用包含的文件并设置基本目录。不起作用。它说***递归变量'VZW_BASE_DIR'引用自身(最终)。停止。@Sarwan,检查更新,这将消除无限递归。这样我就不需要包含Makefile.mk文件。@Sarwan,这当然是一个选项。事实上,你已经知道include目录在哪里,所以你可以充分利用这些信息。谢谢@paxdiablo。我完全按照你说的做了。