GNU Make列出自上次调用make以来修改过的源文件?

时间:2012-07-16 06:09:19

标签: makefile gnu-make

我知道

根据更改的源文件,自动计算出需要更新的文件。如果一个非源文件依赖于另一个非源文件,它还会自动确定更新文件的正确顺序。

因此,如果您更改了一些源文件然后运行Make,则无需重新编译所有程序。它仅更新那些直接或间接依赖于您更改的源文件的非源文件。

现在我想知道我是否可以要求Make列出这些修改后的来源?

2 个答案:

答案 0 :(得分:4)

您需要一个使用所有来源作为先决条件的虚拟文件:

mod_list: foo.c bar.cc baz.cpp
    @echo modified sources: $?
    @touch $@

您可以将来源列表保存为单独的变量:

WATCHED_SOURCES = foo.c bar.cc baz.cpp
mod_list: $(WATCHED_SOURCES)
    @echo modified sources: $?
    @touch $@

或使用通配符查看所有来源:

WATCHED_SOURCES = $(wildcard *.c *.cc *.cpp *.whatever)
mod_list: $(WATCHED_SOURCES)
    @echo modified sources: $?
    @touch $@

答案 1 :(得分:0)

一种简单的方法是使用干运行选项,可以是-n--dry-run或其他几种选择,具体取决于您使用的具体实现方式。这告诉你如果执行将会做什么,除其他外,显示它将重新编译的源文件。

全部在man页面中。