我有一种情况,我重构了一些代码,并移动了一个包含文件。
尝试构建源树会产生错误:
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
无效?
答案 0 :(得分:1)
make
中没有魔法。如果main.o
取决于dispatcher.h
,那么 会写在某处。
我怀疑您的Makefile
使用创建依赖项文件的gcc
或-MD
选项运行-MDD
。通常它们以.d
后缀命名。这些依赖项文件由gcc
自动创建为Makefile内容:target: dependencies
。
然后将这些文件包含在主Makefile
中,以提供完全自动化的依赖关系。
您应该查找这些.d
文件并将其删除。