Makefile 取决于make文件本身 如果MaFIX文件本身被更改,则安全的赌注是考虑所有目标过期。
有没有一种聪明的方法来添加这种依赖关系?有其他选择吗?确保对象文件依赖于makefile:Makefile 取决于make文件本身 如果MaFIX文件本身被更改,则安全的赌注是考虑所有目标过期。,makefile,gnu-make,Makefile,Gnu Make,有没有一种聪明的方法来添加这种依赖关系?有其他选择吗?确保对象文件依赖于makefile: $(OBJFILES) : Makefile 其中,Makefile是生成文件的名称。这是一个安全的赌注,但却是一个糟糕的主意。示例:您正在使用automake和updateMakefile.am添加单个源文件。正确的反应是只编译新文件并将其链接进来。在你的计划中,一切都将重建 此外,除非您触摸文件,否则添加依赖项不会起任何作用,例如: $(SRCS): Makefile touch $@ 这
$(OBJFILES) : Makefile
其中,
Makefile
是生成文件的名称。这是一个安全的赌注,但却是一个糟糕的主意。示例:您正在使用automake和updateMakefile.am
添加单个源文件。正确的反应是只编译新文件并将其链接进来。在你的计划中,一切都将重建
此外,除非您触摸文件,否则添加依赖项不会起任何作用,例如:
$(SRCS): Makefile
touch $@
这将触发使用mtime检测并发修改的编辑器(emacs就是一个例子)
如果您正在做一些重要的事情,只需在完成更改后运行
makeclean all
。由于GNU制作了4.3版,现在可以使用这两个版本:
- 为每个目标添加新的先决条件
- 获取make文件的路径
.EXTRA_PREREQS:= $(abspath $(lastword $(MAKEFILE_LIST)))
使每个目标依赖于当前生成文件以及包含的生成文件
将以下行放在文件末尾:
.EXTRA_PREREQS+=$(foreach mk, ${MAKEFILE_LIST},$(abspath ${mk}))
我想我需要自己填充SRC文件?是的。我的问题可能听起来有点傲慢,但我想问的是,您希望从替代解决方案中获得什么样的属性。我不知道如何依赖“每一个目标”,我不认为这些资源不会被更新。但是如果所有目标都依赖于Makefile呢+1提出了一个很好的观点。@Matt Joiner:这是可行的(您还必须包括所有包含的.mk文件的传递闭包),但您仍然有多余的重新编译,通常情况下是这样的。最好不要麻烦:默认情况下,您可以进行短构建,如果需要,还可以进行完整构建。如果你把它放进去,如果你只做了一个小的调整,你就没有办法进行短构建。我知道你做了很多C++的东西。你不能认真地建议完全重建一个C++项目的代价很小吗?为什么你必须触摸Mag文件?该规则仅在Makefile已比目标文件更新时运行。它不涉及
Makefile
。它正在接触源文件。如果你不接触源文件,它总是会考虑到源的过时,这意味着它每次都会重新编译它。<代码>使< /COD>被调用。不久前我问了同样的问题:奇怪的是,它没有出现在搜索中,甚至没有相关的。这可能还不够。变量改变时会发生什么?(例如,您可能需要在make CDEFS=debug
和make CDEFS=release
之间进行清理)