gcc 自动依赖完整路径
gcc auto dependency full path
我有一个简单的项目 - 它有一个 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:
有没有办法获取 所有 个文件的完整路径?
问题出在 -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
的完整路径。
我有一个简单的项目 - 它有一个 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:
有没有办法获取 所有 个文件的完整路径?
问题出在 -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
的完整路径。