2012-08-14 13 views
44

Sto provando a scrivere un piccolo script di compilazione e voglio determinare se gli include includono o meno il sistema. Quindi voglio che g ++ mi dica il percorso di inclusione che sta usando.Dump include percorsi da g ++

cpp -v sembra lo scatto migliore, ma non mi fornisce i percorsi C++.

Così ho provato:

g++ -Xpreprocessor -v 

che non funziona perfettamente ragione - g ++ cattura l'-v per il proprio output dettagliato.

Grazie, Oliver

risposta

66

Da Jonathan Wakely una scelta migliore (funziona su clang troppo):

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

ho notato c'è una bandiera in cpp per specificare la lingua. Funziona come un fascino.

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. 

appena notato che è importante per il -x c++ to be -xc++ su gcc 4.2

+7

o equivalentemente, 'g ++ -E -x C++ - -v

+0

Cheers - questa è un'opzione migliore. Funziona anche su clang. – Oliver

+0

Potrebbe semplificarlo semplicemente con 'g ++ -E -x C++ -v/dev/null'. – Rufflewind