C++ Projektstruktur, Module, Include Files und Pfade (Qt, qmake, .pro)

Gast #3124104
Lesenswert?

Mein Qt-C++-GUI-Projekt wächst und ich möchte das Quellverzeichnis 
mittels Unterverzeichnissen strukturieren.
Das einfache verschieben der Quelldateien genügt nicht, sie werden nicht 
mehr gefunden.

Ist es üblich, die #include "./path/to/file.ext" mit vollem Pfad relativ 
zum Projektverzeichnis zu machen, oder gibt es allg. eine Methode, dem 
Präprozessor zu sagen, er möge alle Quell-Unterverzeichnisse 
durchsuchen, so dass #include "file.ext" genügt?

Darüberhinaus werden in meinem Qt-Projekt (C++) in der Projektdatei 
(.pro), aus der per qmake dann die Makefiles erstellt werden, SOURCES 
und HEADERS explizit angegeben, bislang nur der Dateiname.
Mit einer Angabe in INCLUDEPATH wird offenbar auch eine verschobene 
Datei gefunden, allerdings bindet diese wiederum eine ein, die in der 
Verzeichnisstruktur "höher" liegt: sie wird nicht gefunden.

Evtl. gibt es in den Weiten des Netzes dazu eine empfehlenswerte 
Erklärung?
#3127018
Lesenswert?

Hanz schrieb:
> Ist es üblich, die #include "./path/to/file.ext" mit vollem Pfad relativ
> zum Projektverzeichnis zu machen,

Nicht unbedingt der volle Pfad, aber wenn der Code in mehrere Module 
aufgetrennt ist, kann es durchaus übersichtlicher sein, wenn du ein
1
 #include "modul/datei.h"
machst.

> oder gibt es allg. eine Methode, dem Präprozessor zu sagen, er möge alle
> Quell-Unterverzeichnisse durchsuchen, so dass #include "file.ext" genügt?

Ja, indem du alle Quell-Unterverzeichnisse per -Iverzeichnis (oder wie 
auch immer es bei deinem Compiler heißen muß) übergibst, bzw. da du 
offensichtlich qmake versendest eben über den INCLUDEPATH.

> Mit einer Angabe in INCLUDEPATH wird offenbar auch eine verschobene
> Datei gefunden, allerdings bindet diese wiederum eine ein, die in der
> Verzeichnisstruktur "höher" liegt: sie wird nicht gefunden.

Auch wenn du dieses "höhere" Verzeichnis ebenfalls angibst?
Gast #3129328
Lesenswert?

Ja, das höhere Verzeichnis ist angegeben. Irgendwas stimmt da nicht, ich 
muss mir mal die erzeugten Makefiles ansehen. Wie dem auch sei, ich habe 
die Dateien mit Pfad angegeben, ist zwar Tipparbeit, aber es 
funktioniert erstmal. Und du hast recht, wenn der Name nicht Programm 
ist, kann der Pfad es übersichtlicher machen.
Danke für deinen Beitrag.

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