Как запретить включенному в кавычки поиску в каталоге текущего исходного файла?

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

17
задан Mark Adler 24 July 2012 в 02:59
поделиться