¿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
-MM
o 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 -dI
solución sugerida ).fuente
g++ -MM t.cc
no muestra ninguna inclusión, solot.o: t.cc
. ¿Necesita algo más?/showIncludes
opción. MSVC incluso sangrará para mostrarle el anidamiento de los encabezados (no veo eso-M
en GCC).