这是我想要实现的目标:
每次调用 make 时,在我的Makefile中我都会调用一个运行lint工具的脚本。但是我想避免告诉lint再次搜索整个代码库,而应该只针对生成增量构建的文件运行。如果没有重新编译文件,则无需再次对其运行lint。
我不知道 make 如何检查哪些文件需要在增量版本上重新编译。我不认为它在任何地方存储为列表。
如果我不想用记录其输出的脚本包装 make ,然后分析其标准输出以查看哪些文件已被重新编译,是否有其他方法可以获取这个增量构建列表?
答案 0 :(得分:1)
我不清楚为什么你只想对这个make调用过时的文件运行lint。如果你运行make 5次并且只在第五次重新运行lint工具期间怎么办...那么你只需要在第五次运行make期间修改的文件,但是你不会lint修改在前四次。
在我看来,你真的想要对自上次运行lint以来修改过的所有文件运行lint。这很简单:
run-lint: $(SOURCES)
lint $?
@touch $@
$?
automatic variable扩展为比目标文件更新的文件,然后在lint完成后我们触摸目标文件,使其现在是最新的。每次运行make run-lint
时,它都会丢失自上次运行以来发生过更改的所有文件。