我想编写一个小型的构建脚本,希望确定包含文件是否为系统包含文件。因此,我想让 g++ 告诉我它正在使用哪些包含路径。
cpp -v
似乎是最好的选择,但它并没有给出 C++ 路径。
所以我尝试了:
g++ -Xpreprocessor -v
这并不完全有效 - g++会将-v
用于自己的详细输出。
我想编写一个小型的构建脚本,希望确定包含文件是否为系统包含文件。因此,我想让 g++ 告诉我它正在使用哪些包含路径。
cpp -v
似乎是最好的选择,但它并没有给出 C++ 路径。
所以我尝试了:
g++ -Xpreprocessor -v
这并不完全有效 - g++会将-v
用于自己的详细输出。
来自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++
非常重要。
g++ -E -x c++ - -v < /dev/null
,这意味着您可以确保使用与编译时相同的g++
可执行文件。 - Jonathan Wakelyg++ -E -x c++ -v /dev/null
。 - Rufflewind