gcc предоставляет параметр -I-, для которого поиск каталогов -I, предшествующих -I-, для цитируемых включает (#include "foo.h"), а -I каталоги, следующие за -I-, ищут для заключенных в скобки включений (#include <foo.h>), а также после включения других цитируемых ссылок.
-I- имеет еще один очень важный эффект. Он удаляет каталог исходного файла, в котором находится #include, из пути поиска по умолчанию. Обычно цитируемый include всегда ищет каталог исходного файла и ищет его перед любыми -I или другими каталогами. Таким образом, -I- позволяет точно указать, куда обратиться за цитированными файлами include в том порядке, в котором вы хотите, удалив этот путь по умолчанию, который в противном случае будет иметь приоритет.
Так звучит, что я ответил на мой вопрос, да? Нет. Когда я использую -I- сейчас, я получаю эту nastygram:
cc1: note: obsolete option -I- used, please use -iquote instead
Проблема заключается в том, что -iquote не удаляет текущий каталог из пути поиска. Он по-прежнему всегда просматривается первым, независимо от того, что я предоставляю -iquote.
Итак, возникает вопрос: как получить тот же эффект, что и -I-, не используя -I-, который устарел и в конечном итоге уйдет?
Разработка:
Предположим, что файлы выложены следующим образом:
srcdir/
configure
file1.c
file2.c
config.h
builddir/
Makefile
file1.o
file2.o
config.h
libpudding.a
По разным причинам мы не можем удалить config.h из srcdir (это повлияет на процесс сборки на других платформах). Однако мы хотим включить config.h из builddir в предпочтение zconf.h в srcdir.
Это может быть выполнено с помощью значка GCC -I-, но, похоже, это невозможно.
Обновленный вопрос:
Хорошо, похоже, что разработчики GNU CC устарели -I-, но не предоставили альтернативный способ достижения своей функциональности. Итак, мой обновленный вопрос: какой самый эффективный способ привлечь внимание разработчиков, так что существует высокая вероятность того, что либо -I- недосчитан (что я считаю наиболее предпочтительным, так как это довольно элегантный способ обрабатывать задание поиска, гораздо более и менее менее уродливое, чем -iquotexxx), или что какой-то способ предоставляется для удаления текущего каталога из цитируемого пути поиска поиска?