【发布时间】:2014-09-25 18:11:12
【问题描述】:
我有main.cpp 文件,我想为其生成依赖文件main.d(要包含在Makefile 中)。
我打电话给g++ -MM -MF src/main.d -MP -MT src/main.o src/main.cpp。除非我有一些源生成器,否则它工作正常。我为此找到了-MG 标志,但它并没有像我预期的那样工作。
例如:main.cpp 包括module/mod.h (#include "module/mod.h") 和mod.h 包括generator/gen.h (#include "generator/gen.h"),生成gen.h。结构如下:
-Makefile
-src
--main.cpp
--module
---mod.h
---generator
----gen.h
在Makefile我有一个规则来生成src/module/generator/gen.h。
由g++ 生成的现有文件的依赖项是正确的:
src/main.o: src/module/mod.h
但是对于不存在的文件gen.h 依赖只是generator/gen.h。
如果我在生成依赖项之前生成此文件,则它是正确的src/module/generator/gen.h。
g++ 是否还有其他选项可以正确生成不存在文件的依赖项?
main.d 在gen.h 不存在时生成:
src/main.o: src/module/mod.h generator/gen.h
当gen.h 存在时生成正确的main.d:
src/main.o: src/module/mod.h src/module/generator/gen.h
【问题讨论】: