问题:如何高效地根据命令搜寻项目中对应的Makefile文件(或者.mk文件)?
详细表述问题:
在使用 make -n target 打印出生成目标文件所需要执行的所有命令后,我发现某个命令不合适,需要修改,因此需要到这个命令对应的子Makefile(或者.mk文件)
去修改该命令。
然而在大型项目中,包含相当多的Makefile文件(以及.mk文件),这让手动寻找某个命令对应的子Makefile变得很困难。
直接使用“字符串匹配工具”是不行的,因为Makefile中编写的命令往往并不是最终真正执行的命令,比如:
gcc test.c -o test.o 在Makefile中的编写方式是 $(CC) $^ $(CFLAGS) -o $@
于是我在思考“是否有比手动搜索更高效的方式去寻找一个命令对应的子Makefile?”
为了解决这个问题,我进行了以下尝试:
1. GOOGLE搜索 Find corresponding (sub) Makefile according to a command。没有找到相关信息
2. GOOGLE搜索 How to know which Makefile executing which command?
2.1 找到 Stackoverflow 网页 How can I tell which makefile the make command used? 该提问下有两个回答
2.1.1 使用 MAKEFILE_LIST变量。这个变量包括了项目根目录下主Makefile所include的所有子Makefile,对我找一个特定的Makefile文件并没有帮助
2.1.2 make时使用 -d 和 --debug 选项。我阅读了 man make 手册,尝试了 --debug选项 的所有flags,并没有找到我需要的功能
2.2 找到 Stackoverflow网页 Know what shell commands / recipes are executed with Make 该提问下有一个回答
2.2.1 答主介绍了如何打印make执行的命令,但并没有提到如何显示命令对应的Makefile
----here----
回答:发现 make --trace 选项似乎能够显示相应的makefile文件,暂时先用着
目前我依然没有找到 “高效地根据命令搜寻项目中对应的Makefile文件” 的方法,请问我还需要哪些努力?或者,有其它高效地定位大型项目中Makefile的思路和方法吗?