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

问题描述:

在gnumake的,可以包括文件,如下所示:是否可以从Make中包含的文件中获取包含文件的路径?

include some_file 

我现在想知道,是有可能得到的some_file该文件的文件路径,例如通过做$(shell pwd)? (我知道该命令特别是不起作用,因为它获取工作目录的路径,而不是包含的文件)。

您可以使用MAKEFILE_LIST变量来获得该值。该变量中的最后一个文件名将是当前的生成文件,只要您在包含任何其他文件之前检查它,就可以使用。基本上每次make读入一个新的生成文件生成文件的名称被添加到变量的末尾,但没有价值正在不断从变量删除生成文件不再被解析即使经过:

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

酷!现在我不再需要手动将其写入每个包含的模块文件中! = d – gablin

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