Ответ 1
Это даст make зависимости, которые перечисляют абсолютные пути include файлов:
gcc -M showtime.c
Если вы не хотите, чтобы система включала (т.е. #include <something.h>
), используйте:
gcc -MM showtime.c
Как я могу узнать, где g++ смог найти файл include? В принципе, если я
#include <foo.h>
g++ сканирует путь поиска, используя любые опции включения, чтобы добавить или изменить путь. Но, в конце концов, есть ли способ, которым я могу сказать абсолютный путь foo.h, который g++ решил скомпилировать? Особенно актуально, если в множестве путей поиска содержится более одного foo.h.
Недостаточно способа выполнить это... есть ли способ заставить g++ рассказать мне, каков его конечный путь поиска после включения значений по умолчанию и все варианты включают?
Это даст make зависимости, которые перечисляют абсолютные пути include файлов:
gcc -M showtime.c
Если вы не хотите, чтобы система включала (т.е. #include <something.h>
), используйте:
gcc -MM showtime.c
g++ -H ...
также напечатает полный путь включенных файлов в формате, который показывает, какой заголовок включает в себя
Правильное использование
g++ -E -dI ... (whatever the original command arguments were)
Если вы используете -MM
или одну из связанных опций (-M
и т.д.), вы получаете только список заголовков, которые включены без наличия всего другого выхода препроцессора (который вы, кажется, получаете с предложенным g++ -E -dI
).