我有一个简单的项目 - 它有一个foo.cxx
和一个bar.h
:
// bar.h
// nothing
// foo.cxx
#include "bar.h"
// nothing else
如果我将bar.h
包含在""
中,则依赖项文件包含其完整路径的所有内容:
$ g++ -std=c++11 -MP -MMD -MF /home/barry/sandbox/foo.d
-c /home/barry/sandbox/foo.cxx -o /home/barry/sandbox/foo.o
$ cat foo.d
/home/barry/sandbox/foo.o: /home/barry/sandbox/foo.cxx \
/home/barry/sandbox/bar.h
/home/barry/sandbox/bar.h:
但是,如果我将其与<>
一起添加并添加-I.
,我只会自己获得bar.h
:
$ g++ -std=c++11 -I. -MP -MMD -MF /home/barry/sandbox/foo.d
-c /home/barry/sandbox/foo.cxx -o /home/barry/sandbox/foo.o
$ cat foo.d
/home/barry/sandbox/foo.o: /home/barry/sandbox/foo.cxx bar.h
bar.h:
有没有办法获取所有文件的完整路径?
答案 0 :(得分:1)
问题在于-I.
当gcc确定<bar.h>
的包含时,它会将其视为./bar.h
,因此它将以相同的方式打印在依赖项文件中
如果我也通过-I
提供完整路径:
$ g++ -std=c++11 -I/home/barry/sandbox -MP -MMD
-MF /home/barry/sandbox/foo.d
-c /home/barry/sandbox/foo.cxx
-o /home/barry/sandbox/foo.o
然后,无论""
还是<>
,我都会根据需要在bar.h
中获得foo.d
的完整路径。