[英]gcc auto dependency full path
我有一个简单的项目 - 它有一个foo.cxx
和一个bar.h
:
// bar.h
// nothing
// foo.cxx
#include "bar.h"
// nothing else
如果我包含带有""
s 的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:
有没有办法获得所有文件的完整路径?
问题在于-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
然后不管""
或<>
,我都会根据需要在foo.d
获得bar.h
的完整路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.