从g++中导出包含路径

76

我想编写一个小型的构建脚本,希望确定包含文件是否为系统包含文件。因此,我想让 g++ 告诉我它正在使用哪些包含路径。

cpp -v 似乎是最好的选择,但它并没有给出 C++ 路径。

所以我尝试了:

g++ -Xpreprocessor -v  

这并不完全有效 - g++会将-v用于自己的详细输出。

1个回答

113

来自Jonathan Wakely的更好选择(也适用于clang):

g++ -E -x c++ - -v < /dev/null 
clang++ -E -x c++ - -v < /dev/null

我注意到在cpp中有一个用于指定语言的标志。这非常好用。

cpp -xc++ -v < /dev/null


#include "..." search starts here:
#include <...> search starts here:
 /usr/local/Cellar/gcc/4.7.0/gcc/lib/gcc/x86_64-apple-darwin11.4.0/4.7.0/../../../../include/c++/4.7.0
 /usr/local/Cellar/gcc/4.7.0/gcc/lib/gcc/x86_64-apple-darwin11.4.0/4.7.0/../../../../include/c++/4.7.0/x86_64-apple-darwin11.4.0
 /usr/local/Cellar/gcc/4.7.0/gcc/lib/gcc/x86_64-apple-darwin11.4.0/4.7.0/../../../../include/c++/4.7.0/backward
 /usr/local/Cellar/gcc/4.7.0/gcc/lib/gcc/x86_64-apple-darwin11.4.0/4.7.0/include
 /usr/local/include
 /usr/local/Cellar/gcc/4.7.0/gcc/include
 /usr/local/Cellar/gcc/4.7.0/gcc/lib/gcc/x86_64-apple-darwin11.4.0/4.7.0/include-fixed
 /usr/include
 /System/Library/Frameworks
 /Library/Frameworks
End of search list.

刚注意到在gcc 4.2中,-x c++应该改成-xc++非常重要。


8
或者等价地,g++ -E -x c++ - -v < /dev/null,这意味着您可以确保使用与编译时相同的 g++ 可执行文件。 - Jonathan Wakely
干杯 - 这是更好的选择。在clang上也可以工作。 - Oliver
可以简化为 g++ -E -x c++ -v /dev/null - Rufflewind

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接