gcc предоставляет параметр -I-
, для которого выполняется поиск -I
каталогов, предшествующих -I-
, для включения в кавычки(#include "foo.h"
), и -I
каталоги, следующие за -I-
, ищутся в квадратных скобках, включает(#include <foo.h>
), а также после других для цитируемых включает.
-I-
имеет еще один очень важный эффект. Он удаляет каталог исходного файла, в котором находится #include
, из пути поиска по умолчанию. Обычно включение в кавычки всегда ищет каталог исходного файла и ищет его до любого -I
или других каталогов. Таким образом, -I-
позволяет вам точно указать, куда идти для включаемых файлов в кавычках в нужном вам порядке, удаляя этот путь по умолчанию, который в противном случае имел бы приоритет.
Итак, похоже, я ответил на свой вопрос, да? Нет. Когда я использую -I-
сейчас, я получаю эту настиграмму:
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 ), или что предоставляется какой-то способ удалить текущий каталог из указанного в кавычках пути поиска?