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



我知道

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

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

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

您需要一个伪文件,该文件使用所有源作为先决条件:

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 $@

一种简单的方法是使用干式运行选项,它可以是-n--dry-run,也可以是其他几个选项,这在一定程度上取决于您正在使用的实现。这告诉你如果执行make会做什么,特别是,显示你它将重新编译哪些源文件。

都在man页面上。

最新更新