eigene features.h unter Linux gcc

Gast #6425898
Lesenswert?

Hallo,
wir haben ein Projekt bekommen, welches unter Windows gebaut wurde. Dort 
gibt es eine Datei mit dem Namen features.h
Jetzt sollen wir das ganze Projekt in qt-creator unter Linux mit gcc 
bauen.
Vom vorgegebenen Code dürfen wir aber ncihts ändern. Jetzt ist das 
Problem, dass diese features.h inkludiert wird Linux inkludiert aber 
anscheinen seine eigene und es kracht/bzw. kann nicht compiliert werden.
Für das Projekt haben wir in qt-creator eine .pro und mehrerer .pri 
dateien. In den .pri Dateien steht eigentlich welche Dateien gebaut 
werden soll.
Gibt es eine Möglichkeit genau zu sagen, welche features.h angezogen 
werden soll? Wenn wir die Datei umbenennen funktioniert es, dann haben 
wir allerdings was geändert, was wir vermeiden sollten.
Gibt es eine Möglichkeit genau zu sagen, dass die features.h vom Projekt 
angezogen werden soll? Oder kommen wir um eine Umbenennung nicht herum?
#6428591
Lesenswert?

Hannes J. schrieb:
> Zelda schrieb:
>> Vom vorgegebenen Code dürfen wir aber ncihts ändern.
>
> Wenn ich so eine Scheiße schon lese ...

Ja, das ist schon von vorne herein Krampf.

Zelda schrieb:
> Gibt es eine Möglichkeit genau zu sagen, welche features.h angezogen
> werden soll?

Das gibt man als Teil der #include-Direktive an. #include <features.h> 
sucht erst bei den Systemheadern, dann bei denen des Programms. #include 
"features.h" macht es umgekehrt.

Was man noch versuchen könnte, wäre, den Header nochmal extra über die 
Kommandozeile mit -i (nicht -I) einzubinden, aber das würde ich als sehr 
unschönen Hack sehen. Besser wäre, es richtig zu machen, was aber wohl 
auf eine Änderung des Code hinaus läuft.
#6429039
Lesenswert?

Rolf M. schrieb:
> Das gibt man als Teil der #include-Direktive an. #include <features.h>
> sucht erst bei den Systemheadern, dann bei denen des Programms. #include
> "features.h" macht es umgekehrt.

Das dachte ich auch, aber in der gcc-Manpage steht:

           You can specify any number or combination of these options on 
the command line to search for header files in several directories.  The 
lookup order is as follows:

           1.  For the quote form of the include directive, the 
directory of the current file is searched first.

           2.  For the quote form of the include directive, the 
directories specified by -iquote options are searched in left-to-right 
order, as they appear on the command line.

           3.  Directories specified with -I options are scanned in 
left-to-right order.

           4.  Directories specified with -isystem options are scanned 
in left-to-right order.

           5.  Standard system directories are scanned.

           6.  Directories specified with -idirafter options are scanned 
in left-to-right order.

Ich verstehe das so, dass Verzeichnisse, die mit -I angegeben sind, 
immer zuerst durchsucht werden, oder? Sprich, wenn es ein features.h in 
./include/ gibt und ich -I./include/ mache, sollte es immer das nehmen 
vor dem in /usr/include, egal ob ich die "" oder die <> Syntax benutze.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren