我知道
根据更改的源文件,自动确定需要更新的文件。它还自动确定更新文件的正确顺序,以防非源文件依赖于另一个非源文件。
因此,如果您更改了一些源文件,然后运行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
页面上。