【问题标题】:How can I capture the current directory as an absolute pathname in a make variable?如何将当前目录捕获为 make 变量中的绝对路径名?
【发布时间】:2011-03-04 06:36:26
【问题描述】:

我想在 GNUmake 文件运行期间将当前目录放入 make 变量中。

执行此操作的语法是什么?像这样?

DIR := $(PWD)

【问题讨论】:

    标签: makefile gnu-make


    【解决方案1】:

    嗯,不,$PWD 有时在您的环境中定义,因此由 make 继承,但通常不是。你需要$CURDIR

    DIR := ${CURDIR}
    

    【讨论】:

    • 文档:gnu.org/software/make/manual/html_node/Recursion.html#Recursion 注意:不是 POSIX:pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html 特别是,PWD 不会在递归调用 make -C 时得到更新。
    • 供参考:这是 Windows 友好的,适用于 cmd、git bash、powershell、conemu... 与 $$PWD 相比在任何地方都不适用于我(上下文:我们的 makefile 正在执行 docker run -v $$PWD:/opt ... 并且 docker 正在抱怨非描述性 Mount denied: The source path "C:/Users/.../somedir;C" doesn't exist and is not known to Docker
    • 注意:这不适用于包含的 makefile。它将报告顶级 makefile 的路径。
    【解决方案2】:

    如果您有一个 makefile 包括另一个目录中的另一个,PWDCURDIR 不会为子 makefile 更新。如果第二个 makefile 需要知道它在哪里,下面会告诉你。

    $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
    

    【讨论】:

      猜你喜欢
      • 2016-12-25
      • 1970-01-01
      • 2010-12-28
      • 2022-01-16
      • 1970-01-01
      • 2011-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多