在 Ubuntu 上使用 gcc 4.7.2,我正在使用以下命令编译一些源文件:
g++ -c -o obj/foo.o foo.cpp -O0 -Wall [.. lots of other args .. ]
这很好用,给了我一个合理的目标文件,obj/foo.o
. 但是,如果我还想同时生成依赖文件:
g++ -c -o obj/foo.o foo.cpp -O -Wall [ .. ] -M -MD -MG -MP -MF obj/foo.dep
然后当我得到一个完全合理的外观obj/foo.dep
时,我得到一个空的obj/foo.o
。编译也没有任何输出。查看文档,似乎这应该有效:
-MD
如果 -MD 与 -E 一起使用,则任何 -o 开关都被理解为指定
依赖输出文件(请参阅 -MF),但如果不使用 -E,则每个 -o 都被理解为
指定一个目标对象文件。由于没有隐含 -E,因此 -MD 可用于生成依赖项输出文件作为
编译过程的副作用。
我没有使用-E
,所以这不应该给我一个目标文件和一个依赖输出文件吗?如何确定问题出在哪里?