我知道
根据更改的源文件,自动计算出需要更新的文件。如果一个非源文件依赖于另一个非源文件,它还会自动确定更新文件的正确顺序。
因此,如果您更改了一些源文件然后运行Make,则无需重新编译所有程序。它仅更新那些直接或间接依赖于您更改的源文件的非源文件。
现在我想知道我是否可以要求Make列出这些修改后的来源?
答案 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
页面中。