2012-08-14 5 views
44

Ich versuche, ein kleines Build-Skript zu schreiben - und möchte feststellen, ob die Includes System umfasst oder nicht. Also möchte ich, dass g ++ mir den Include-Pfad angibt, den es benutzt.Dump include Pfade von g ++

cpp -v scheint die offensichtlich beste Aufnahme, aber es gibt mir die C++ - Pfade nicht.

Also habe ich versucht:

g++ -Xpreprocessor -v 

Was nicht ganz richtig funktioniert - g ++ für seine eigene ausführliche Ausgabe -v einfängt.

Danke, Oliver

Antwort

66

Von Jonathan Wakely eine bessere Option (auch auf Klirren funktioniert):

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

Ich bemerkte ein Flag in cpp es Sprache zur Spezifikation. Das funktioniert wie ein Zauber.

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. 

habe gerade bemerkt, dass es für die -x c++ to be -xc++ auf gcc 4.2

+7

oder äquivalent 'g ++ -E -x C++ wichtig ist - -v

+0

Prost - das ist eine bessere Option. Arbeitet auch beim Klirren. – Oliver

+0

Könnte das vereinfachen, um nur "g ++ -E-x C++ -v/dev/null". – Rufflewind