2012-08-14 16 views
44

Estoy tratando de escribir un pequeño script de compilación, y quiero determinar si los includes son system includes o no. Así que quiero que g ++ me diga la ruta de inclusión que está usando.Dump include paths from g ++

cpp -v parece ser la mejor opción obvia, pero no me da las rutas C++.

así que he intentado:

g++ -Xpreprocessor -v 

que no funciona del todo bien - g ++ captura la -v para su propia salida detallada.

Gracias, Oliver

Respuesta

66

De Jonathan Wakely una mejor opción (trabaja en sonido metálico también):

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

me di cuenta de que hay una bandera de la PPC para la especificación de lenguaje. Esto funciona como un encanto.

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. 

he dado cuenta de que es importante para la -x c++ to be -xc++ en gcc 4.2

+7

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

+0

Cheers: esa es una mejor opción. Funciona en clang también. – Oliver

+0

Podría simplificar eso solo a 'g ++ -E -x C++ -v/dev/null'. – Rufflewind