3

我知道

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

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

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

4

2 回答 2

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 $@
于 2012-07-16T14:18:31.813 回答
0

一种简单的方法是使用 dry run 选项来制作,这是一个-n--dry-run几个其他选择,部分取决于您正在使用的实现。这会告诉您如果执行 make 会做什么,其中会告诉您它将重新编译哪些源文件。

这一切都在man页面中。

于 2012-07-16T09:13:53.897 回答