Forum: PC-Programmierung C++ Projektstruktur, Module, Include Files und Pfade (Qt, qmake, .pro)


von Hanz (Gast)


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?

von Rolf M. (rmagnus)


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?

von Hanz (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.