我知道
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 $@
一种简单的方法是使用 dry run 选项来制作,这是一个-n
或--dry-run
几个其他选择,部分取决于您正在使用的实现。这会告诉您如果执行 make 会做什么,其中会告诉您它将重新编译哪些源文件。
这一切都在man
页面中。