Makefile 是否可以从Make中的包含文件中获取包含文件的路径?

Makefile 是否可以从Make中的包含文件中获取包含文件的路径?,makefile,Makefile,在Gnumake中,可以包含如下文件: include some_file 我现在想知道,是否可以从该文件中获取某个文件的文件路径,例如通过执行$(shell pwd)?(我知道该命令尤其不起作用,因为它获取的是工作目录的路径,而不是包含的文件。)我认为您可以使用readlink-f命令获取文件的路径。您只需要从文件中知道文件名是什么,我假设您可以硬编码。您可以使用MAKEFILE\u LIST变量来获得它。该变量中的最后一个文件名将是当前的makefile,只要您在包含任何其他文件之前检查它

在Gnumake中,可以包含如下文件:

include some_file

我现在想知道,是否可以从该文件中获取某个文件的文件路径,例如通过执行
$(shell pwd)
?(我知道该命令尤其不起作用,因为它获取的是工作目录的路径,而不是包含的文件。)

我认为您可以使用
readlink-f
命令获取文件的路径。您只需要从文件中知道文件名是什么,我假设您可以硬编码。

您可以使用
MAKEFILE\u LIST
变量来获得它。该变量中的最后一个文件名将是当前的makefile,只要您在包含任何其他文件之前检查它。基本上,每次make读取一个新的makefile时,该makefile的名称都会添加到变量的末尾,但即使不再解析makefile,也不会从变量中删除任何值:

THIS_MAKEFILE := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))

酷!现在我不再需要在我包含的每个模块文件中手动写入它=D