【问题标题】:Makefile - get directory of itself from within included fileMakefile - 从包含的文件中获取自身的目录
【发布时间】:2019-07-11 21:10:22
【问题描述】:

假设一个 makefile 包含多个其他 makefile。这些包含的 makefile 如何知道相对于主 makefile 的路径?

一个示例结构如下:

主要品牌

include ../dir1/dir2/make1.mk
include dir3/dir4/dir5/make2.mk

.PHONY: print_paths
print_paths:
    @echo $(dir1) && @echo $(dir2)

制作1

dir1 = <some code>

ma​​ke2

dir2 = <some code>

我的预期输出是:

../dir1/dir2
dir3/dir4/dir5

我能够通过以下方式解决单个包含文件的问题:

dir1 = $(dir $(lastword $(MAKEFILE_LIST)))

但是,这似乎不适用于多个文件,因为dir1dir2 都将设置为等于makefile 2 的目录。 (我猜这公平吗?毕竟这是最后一个包含的文件)

另外,他们也可以了解自己的绝对路径。

【问题讨论】:

  • 为什么不简单检查$CURDIR
  • $(CURDIR) 将返回主生成文件的路径。我正在寻找主 makefile 和包含的 makefile 之间的相对路径。
  • 更准确地说,$CURDIR 指的是用户的当前目录。重命名希望使问题更清楚。

标签: makefile


【解决方案1】:

您可以简单地添加:

dir1 := $(dir $(lastword $(MAKEFILE_LIST)))

../dir1/dir2/make1.mk 的开头和:

dir2 := $(dir $(lastword $(MAKEFILE_LIST)))

dir3/dir4/dir5/make2.mk 的开头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2021-12-09
    • 1970-01-01
    相关资源
    最近更新 更多