Jak uniemożliwić cytowanemu włączenie wyszukiwania w katalogu bieżącego pliku źródłowego?
gcc zapewnia-I-
opcja, dla której-I
katalogi poprzedzające-I-
są wyszukiwane w cudzysłowie zawiera (#include "foo.h"
), i-I
katalogi po-I-
są wyszukiwane w nawiasie zawiera (#include <foo.h>
), jak również po innych dla cytowanych obejmuje.
-I-
ma jeszcze inny bardzo ważny efekt. Usuwa katalog pliku źródłowego, który#include
jest z domyślnej ścieżki wyszukiwania. Normalnie cytowany include zawsze przeszukuje katalog pliku źródłowego i przeszukuje goprzed każdy-I
lub inne katalogi.-I-
w związku z tym pozwala określić dokładnie, gdzie należy przejść do cytowanych plików dołączanych w żądanej kolejności, usuwając tę domyślną ścieżkę, która w innym przypadku miałaby priorytet.
Więc brzmi to tak, jakbym odpowiedział na moje pytanie, tak? Nie. Kiedy używam-I-
teraz dostaję ten nastygram:
cc1: note: obsolete option -I- used, please use -iquote instead
Problemem jest-iquote
robinie usuń bieżący katalog ze ścieżki wyszukiwania. Nadal jest zawsze wyszukiwany najpierw, bez względu na to, do czego dostarczam-iquote
.
Pytanie brzmi: jak uzyskać taki sam efekt jak-I-
, bez używania-I-
, który został zdeprecjonowany i ostatecznie zniknie?
Opracowanie:
Załóżmy, że pliki są ułożone w następujący sposób:
srcdir/
configure
file1.c
file2.c
config.h
builddir/
Makefile
file1.o
file2.o
config.h
libpudding.a
Z różnych powodów nie możemy usunąćconfig.h
zsrcdir
(wpłynie to na proces kompilacji na innych platformach). Chcemy jednak włączyćconfig.h
zbuilddir
zamiastzconf.h
wsrcdir
.
Można to osiągnąć za pomocą GCC-I-
flaga, ale wydaje się to niemożliwe.
Zaktualizowane pytanie:
Ok, wygląda na to, że programiści GNU CC przestarzali-I-
, ale nie zapewnił alternatywnego sposobu osiągnięcia swojej funkcjonalności. Tak więc moje zaktualizowane pytanie brzmi: jaki jest najbardziej skuteczny sposób, aby zwrócić uwagę deweloperów, aby było duże prawdopodobieństwo, że-I-
jest niezrejestrowany (co najchętniej bym znalazł, ponieważ jest to dość elegancki sposób obsługi wyszukiwania, znacznie bardziej i znacznie mniej brzydki niż -iquotexxx), lub że istnieje jakiś sposób na usunięcie bieżącego katalogu z cudzysłowu to ścieżka wyszukiwania?