¿Cómo puedo saber dónde g ++ pudo encontrar un archivo de inclusión? Básicamente si yo
#include <foo.h>
g ++ escaneará la ruta de búsqueda, usando cualquier opción de inclusión para agregar o alterar la ruta. Pero, al final de los días, ¿hay alguna manera de saber la ruta absoluta de foo.h que g ++ eligió compilar? Especialmente relevante si hay más de una foo.h en la miríada de rutas de búsqueda.
A falta de una forma de lograr eso ... ¿hay alguna manera de hacer que g ++ me diga cuál es su ruta de búsqueda final después de incluir los valores predeterminados y todas las opciones de inclusión?

Respuestas:
Esto le dará a make dependencias que enumeran rutas absolutas de archivos de inclusión:
Si no desea que el sistema incluya (es decir
#include <something.h>), utilice:fuente
También imprimirá la ruta completa de los archivos de inclusión en un formato que muestra qué encabezado incluye qué
fuente
clang++ -MM -H(que es una combinación un poco útil).clang++ -H -fsyntax-only ...si desea evitar la generación de archivos de salida (también funcionagcc).Uso seguro
fuente
Si usa
-MMo una de las opciones relacionadas (-M, etc.), obtiene solo la lista de encabezados que se incluyen sin tener todos los demás resultados del preprocesador (que parece obtener con lag++ -E -dIsolución sugerida ).fuente
g++ -MM t.ccno muestra ninguna inclusión, solot.o: t.cc. ¿Necesita algo más?/showIncludesopción. MSVC incluso sangrará para mostrarle el anidamiento de los encabezados (no veo eso-Men GCC).