【发布时间】:2021-05-19 05:15:00
【问题描述】:
说~/prj/abc/abcsim/abctsim/abcxyz/Makefile下面有一行。
TOOLCHAIN_DIR := $(PWD)/../../../prj1/tools/gcc_tools
如果我在目录~/test 中,并且如果我运行make -C ~/prj/abc/abcsim/abctsim/abcxyz,这不起作用,因为$(PWD) 变量设置为~/test,而不是~/prj/abc/abcsim/abctsim/abcxyz。如何获取Makefile 所在的目录路径?
在 bash 中有这样的东西:How can I get the source directory of a Bash script from within the script itself?
【问题讨论】:
-
为了完全清楚,make 对变量
PWD根本没有特殊处理。就 make 而言,PWD只是它从 shell 继承的另一个变量,如PATH和USER等。所以,你的 makefile 中PWD的值是你的 shell 的任何值 传入,这是你调用 make 之前 shell 的工作目录。正如下面所指出的,CURDIR是一个 make 变量,它将设置为在处理-C之后,make 正在运行的工作目录。