Wie verhindere ich, dass ein Include in Anführungszeichen das Verzeichnis der aktuellen Quelldatei durchsucht?

gcc bietet die-I- Option, für die-I Verzeichnisse vor dem-I- Gesucht werden zitierte Includes (#include "foo.h"), und-I Verzeichnisse nach dem-I- nach eingeklammerten Includes gesucht werden (#include <foo.h>), sowie nach den anderen für zitierte enthält.

-I- hat einen anderen sehr wichtigen Effekt. Es entfernt das Verzeichnis der Quelldatei, die das#include ist aus dem Standardsuchpfad. Normalerweise durchsucht ein Include in Anführungszeichen immer das Verzeichnis der Quelldatei und durchsucht esVor irgendein-I oder andere Verzeichnisse.-I- Aus diesem Grund können Sie genau angeben, wohin die Include-Dateien in Anführungszeichen in der gewünschten Reihenfolge verschoben werden sollen, indem Sie den Standardpfad entfernen, der sonst Vorrang hat.

Es hört sich also so an, als hätte ich meine Frage beantwortet, ja? Wenn ich benutze-I- Jetzt verstehe ich dieses fiese Gramm:

cc1: note: obsolete option -I- used, please use -iquote instead

Das Problem ist, dass-iquote tutnicht Entfernen Sie das aktuelle Verzeichnis aus dem Suchpfad. Es wird immer zuerst gesucht, egal was ich zur Verfügung stelle-iquote.

Die Frage ist also: Wie bekomme ich den gleichen Effekt wie-I-, ohne zu benutzen-I-, die veraltet ist und irgendwann weggeht?

Ausarbeitung:

Angenommen, die Dateien sind wie folgt angeordnet:

srcdir/
    configure
    file1.c
    file2.c
    config.h

builddir/
    Makefile
    file1.o
    file2.o
    config.h
    libpudding.a

Aus verschiedenen Gründen können wir nicht entfernenconfig.h vonsrcdir (Dies wirkt sich auf den Erstellungsprozess auf anderen Plattformen aus.) Wir möchten jedoch dieconfig.h vonbuilddir vor demzconf.h imsrcdir.

Dies kann mit GCCs erreicht werden-I- Flagge, aber es scheint sonst unmöglich.

Aktualisierte Frage:

Ok, die GNU CC-Entwickler scheinen veraltet zu sein-I-, bot aber keinen alternativen Weg, um seine Funktionalität zu erreichen. Meine aktualisierte Frage lautet also: Was ist der effektivste Weg, um die Entwickler darauf aufmerksam zu machen, so dass mit hoher Wahrscheinlichkeit auch dies der Fall ist-I- ist undeprecated (was ich am meisten vorziehen würde, da es eine sehr elegante Art ist, die Suche zu spezifizieren, viel mehr und viel weniger hässlich als -iquotexxx), oder es gibt eine Möglichkeit, das aktuelle Verzeichnis aus einem zitierten Include zu entfernen Suchpfad?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage