Ada*_*tan 6 makefile working-directory pwd
我使用Makefile来运行docker run目标,它需要当前工作目录作为其参数之一.
我使用$(PWD)或者$(CURDIR):
build: Dockerfile
docker run ... <$(PWD) or $(CURDIR)>
Run Code Online (Sandbox Code Playgroud)
它们似乎产生了相同的价值.我不知道是否有一个微妙的差异,以后可以咬我,所以我想知道每个的确切定义.
man make$(PWD)和$(CURDIR)Makefile 之间有什么区别?
Ada*_*tan 10
使用CURDIR.
CURDIR引用GNU制作手册:
CURDIR
设置为当前工作目录的绝对路径名.
为方便起见,当GNU make启动时(在处理完任何-C选项之后),它将变量CURDIR设置为当前工作目录的路径名.make永远不会触及此值:特别注意,如果包含其他目录中的文件,则CURDIR的值不会更改.如果在makefile中设置了该值,则该值具有相同的优先级(默认情况下,环境变量CURDIR不会覆盖此值).请注意,设置此变量对make的操作没有影响(例如,它不会导致make更改其工作目录).
PWDPWD在制作手册中没有参考.很快env | grep PWD发现它是由环境设置的(在我的例子中是zsh).GNU关于特殊Shell变量的
说明指出:
PWD
Posix 1003.1-2001要求cd和pwd必须更新PWD环境变量以指向当前目录的逻辑名称,但传统shell不支持此操作.如果一个shell实例维护PWD但是一个子公司并且不同的shell不知道PWD并执行cd,这可能会引起混淆; 在这种情况下,PWD指向错误的目录.使用``pwd
' rather than$ PWD'.
由于CURDIR是保证在工作Make中PWD 可能会从外壳继承,前者应该是首选.
| 归档时间: |
|
| 查看次数: |
2921 次 |
| 最近记录: |