如何查找GNU make命令的原始启动目录?
实现方案
GNU make 本身没有内置专门存储原始调用目录的变量,不存在你要的开箱即用的SOME_MAGIC_VARIABLE,可以通过以下两种常用方法实现需求:
方案1:显式传递原始目录(兼容性最高,全平台可用)
调用make时主动将当前shell的工作目录作为自定义变量传入,不需要修改Makefile之外的配置,也不依赖平台特性。
示例Makefile:
# 增加默认值,直接在Makefile所在目录调用make时也不会出错 ORIG_PWD ?= $(CURDIR) all: @echo $(CURDIR) @echo $(ORIG_PWD)
调用命令:
cd /other/place make ORIG_PWD=$(pwd) -C /some/location
输出结果:
/some/location /other/place
方案2:配置别名自动传递(无需每次手动加参数)
如果不想每次调用都手动加ORIG_PWD=$(pwd),可以给make配置shell别名,会自动将当前工作目录传入:
- 把下面的配置写入你的shell配置文件(比如
~/.bashrc、~/.zshrc):
alias make='make ORIG_PWD=$(pwd)'
- 执行
source ~/.bashrc(对应你用的shell配置文件)生效后,直接正常调用make即可:
cd /other/place make -C /some/location
同样可以得到预期输出。
内容的提问来源于stack exchange,提问作者Zoltan
相关产品推荐
相关产品推荐

