如何生成从GNU编译的文件列表进行增量构建?

时间:2017-03-12 02:04:38

标签: gnu-make

这是我想要实现的目标:

每次调用 make 时,在我的Makefile中我都会调用一个运行lint工具的脚本。但是我想避免告诉lint再次搜索整个代码库,而应该只针对生成增量构建的文件运行。如果没有重新编译文件,则无需再次对其运行lint。

我不知道 make 如何检查哪些文件需要在增量版本上重新编译。我不认为它在任何地方存储为列表。

如果我不想用记录其输出的脚本包装 make ,然后分析其标准输出以查看哪些文件已被重新编译,是否有其他方法可以获取这个增量构建列表?

1 个答案:

答案 0 :(得分:1)

我不清楚为什么你只想对这个make调用过时的文件运行lint。如果你运行make 5次并且只在第五次重新运行lint工具期间怎么办...那么你只需要在第五次运行make期间修改的文件,但是你不会lint修改在前四次。

在我看来,你真的想要对自上次运行lint以来修改过的所有文件运行lint。这很简单:

run-lint: $(SOURCES)
        lint $?
        @touch $@

$? automatic variable扩展为比目标文件更新的文件,然后在lint完成后我们触摸目标文件,使其现在是最新的。每次运行make run-lint时,它都会丢失自上次运行以来发生过更改的所有文件。

相关问题