GNU Make高级功能探索
1. 生成XML物料清单(BOM)
在使用标准GNU make输出时,很难回答“构建了什么以及为什么构建”的问题。可以使用一种简单的技术让GNU make创建包含物料清单(BOM)的XML文件,该BOM包含makefile构建的所有文件的名称,并以嵌套形式显示每个文件的先决条件。
1.1 示例Makefile和BOM
以下是一个简单的makefile示例:
all: foo bar @echo Making $@ foo: baz @echo Making $@ bar: @echo Making $@ baz: @echo Making $@运行此代码在GNU make中会产生以下输出:
$ make Making baz Making foo Making bar Making all从输出中,无法确定构建的树状顺序或哪些文件依赖于哪些文件。理想的输出应该像下面这样,展示构建内容及其原因:
<rule> <prereq> <rule> <prereq> <rule />