make:缺少依赖项时使对象文件无效

时间:2014-09-23 07:29:34

标签: makefile gnu-make

我有一种情况,我重构了一些代码,并移动了一个包含文件。

尝试构建源树会产生错误:

make: *** No rule to make target `cmd/dispatcher.h', \
    needed by `/tmp/test/dispatcher/main.o'.  Stop.

如果我执行make clean(删除过时的main.o文件),然后重建,我会收到其他错误:

...src/test/dispatcher/main.cpp:3:28: fatal error: cmd/dispatcher.h: \
    No such file or directory

问题:

当缺少某个依赖项时,有没有办法使main.o无效?

1 个答案:

答案 0 :(得分:1)

make中没有魔法。如果main.o取决于dispatcher.h,那么 会写在某处。

我怀疑您的Makefile使用创建依赖项文件的gcc-MD选项运行-MDD。通常它们以.d后缀命名。这些依赖项文件由gcc自动创建为Makefile内容:target: dependencies

然后将这些文件包含在主Makefile中,以提供完全自动化的依赖关系。

您应该查找这些.d文件并将其删除。