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), или что какой-то способ предоставляется для удаления текущего каталога из цитируемого пути поиска поиска?