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

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.