Comment savoir où g ++ a pu trouver un fichier include? Fondamentalement, si je
#include <foo.h>
g ++ analysera le chemin de recherche, en utilisant toutes les options d'inclusion pour ajouter ou modifier le chemin. Mais, à la fin des jours, existe-t-il un moyen de savoir le chemin absolu de foo.h que g ++ a choisi de compiler? Particulièrement pertinent s'il y a plus d'un foo.h dans la myriade de chemins de recherche.
À court d'un moyen d'y parvenir ... existe-t-il un moyen pour que g ++ me dise quel est son chemin de recherche final après avoir inclus les valeurs par défaut et toutes les options incluent?
Cela donnera des dépendances make qui listent les chemins absolus des fichiers include:
gcc -M showtime.c
Si vous ne voulez pas que le système comprenne (c'est-à-dire #include <something.h>
) puis utilisez:
gcc -MM showtime.c
g++ -H ...
imprimera également le chemin complet des fichiers d'inclusion dans un format qui montre quel en-tête inclut lequel
Utilisation sûre
g++ -E -dI ... (whatever the original command arguments were)
Si tu utilises -MM
ou l'une des options associées (-M
, etc.), vous obtenez uniquement la liste des en-têtes qui sont inclus sans avoir toutes les autres sorties de préprocesseur (que vous semblez obtenir avec la suggestion de g++ -E -dI
Solution).