Qt4 und Code::Blocks
-
Hallo,
ich versuche Qt4 mit Code::Blocks zu verwenden. Ein einfaches Projekt ohne
Q_OBJECT und ohne *.ui unterstützung wird sauber kompiliert.
Sobald ich aber ein Projekt mit Q_OBJECT und *.ui Datei habe, Fehler über Fehler!
Ein Fehler ist z.B. dass der uic eine Datei nicht finden kann, wenn ich den
uic aber über die Kommandozeile aus dem Projektverzeichnis aufrufe, findet
er die Datei. Welche Einstellungen habt ihr angepasst, damit Qt4 läuft??? :
Ich habe unter Projekt/Build Options/Commands/Pre build stepsqmake -project
qmake
makeeingefügt und das Häckchen bei 'eigenes Makefile' gesetzt. Sollte doch
eigentlich funktionieren.Klappt bei euch die Codevervollständigung? Wenn ich im Code meiner eingenen
Klasse bin, werden mir auch die Methoden der Klasse angezeigt. Hat die Klasse
aber eine z.B. QLCDNumber Member - zu der weiß der Editor garnichts...Gruß ERiK
-
hi,
das eine ist ein bug. wenn du "use makefile" einschaltest (das hast du doch gemacht?), werden die pre-build-steps nicht mehr ausgeführt. bei "commands-only" - targets könnte es gehen.
das sollte in der nächsten version behoben sein.
wenn du qmake selbst ausführst, sollte es gehen.die codevervollständigung ist noch etwas ... dürftig. "follow global includes" oder so ähnlich könnte dir helfen.
-
Hi,
erstmal danke für deine Hilfe! Das mit dem Bug ist natürlich
ärgerlich, qmake und uic von Hand aufzurufen wollte ich ja
gerade vermeiden.bei "commands-only" - targets könnte es gehen.
Wo finde ich das? Habe mir den Wolf gesucht, aber nichts gefunden.
Soll ich das Häckchen bei 'this is a custum Makefile' jetz lassen?
Was ist eigentlich mit dem moc? Wenn qmake ein Makefile erzeugt hat
und make dieses ausführt, wird dann automatisch 'gemoct'?Gibt es denn irgendwo eine Aleitung, in der die ganzen Einstellungen
beschrieben sind?Gruß ERiK
-
HakenER schrieb:
bei "commands-only" - targets könnte es gehen.
Wo finde ich das? Habe mir den Wolf gesucht, aber nichts gefunden.
project->properties->targets->type
Soll ich das Häckchen bei 'this is a custum Makefile' jetz lassen?
wenn du die qmake-generierte datei benutzen willst, ja.
Was ist eigentlich mit dem moc? Wenn qmake ein Makefile erzeugt hat
und make dieses ausführt, wird dann automatisch 'gemoct'?ja.
Gibt es denn irgendwo eine Aleitung, in der die ganzen Einstellungen
beschrieben sind?
Gruß ERiKmeinst du code::blocks? nicht dass ich wüsste.
-
Ich habe am Wochenende ein bischen ausprobiert:
In meiner Version von Code::Blocks (1.0 RC-1) werden die Pre build steps
ausgeführt. Das scheint also nicht das Problem zu sein.Es wird mit qmake -project eine *.pro Datei erzeugt, danach mit qmake aus
der zuvor erstellen *.pro ein neues Makefile. Das klappt!In den Pre build steps bringt mich folgende Änderung ziehmlich weit:
qmake make.bat
Damit wird die make.bat von qt aufgerufen, es werden die ui Dateien erzeugt
und es wird auch gemockt!Jetzt bekomme ich noch folgende Fehlermeldung:
C:/projekte/qt/regetzek/FormPlotView.cpp:4: undefined reference to `vtable for FormPlotView'
Das sieht nach einem Problem mit den Slots aus!? Da noch eine Idee??
(das Makro Q_OBJECT ist gesetzt)Gruß ERiK
-
schau mal ob du evtl. etwas nützliches in den Foren von Code::blocks findest,
dort wurden ähnliche Probleme bereits diskutiert.
-
schau mal ob du evtl. etwas nützliches in den Foren von Code::blocks findest,
dort wurden ähnliche Probleme bereits diskutiert.Für dieses Problem (vtable) habe ich nur was im Zusammenhang mit wxWidgets gefunden.
Aber könnte es sein, dass es damit zusammenhängt, dass Qt ein debug und
release Verzeichnis anlegt und die moc*.cpp da reinschreibt?
Und der Linker findet sie dann nicht? (der sucht doch nur im Projektverzeichnis)Gruß ERiK
-
Fehler gefunden - neues Problem:
Beim kompilieren wird die moc Datei im Verzeichnis /release erstellt.
Diese muss ich dann natürlich mit#include "./release/moc_FormPlotView.cpp"
einbinden und schon wird ohne Fehler kompiliert.
Neues Problem: wenn ich alle Unterverzeichnisse lösche und das Projekt
neu kompiliere, gibt es natürlich auch die moc Datei noch nicht.
Eigentlich sollte es doch ohne Probleme möglich sein, zuerst die die cpp
Datei durch den MOC zu jagen. Aus irgendeinem Grund wird aber zuerst die
cpp Datei kompiliert und dann meckert der Kompiler (verstänlicherweise)
die fehlende moc Datei an.Wie bekomme ich jetzt zuerst die moc Datei?
Gruß ERiK
-
wo is das häkchen "custom makefile"
oder sowas bei mir gibt nur
compiler options --> build method (gnu mkae)!!!!
-
Ich habe eine Möglichkeit gefunden, dass es jetzt funktioniert.
In der Projektdatei habe ich folgende Zeile eingefügt:MOC_DIR = ./moc
In der zu 'mocenten' cpp Datei habe habe ich folgendes include eingefügt:
#include "./moc/moc_FormPlotView.cpp"
Aus welchen Gründen auch immer, jetzt wird die moc Datei vorher erstellt
und der Kompiler mekert nicht mehr.Was mich nur wundert, als ich mit Qt unter Linux programmiert habe,
brauchte ich nie eine moc Datei zu includieren. Was läuft da anders?wo is das häkchen "custom makefile"
Bei mir unter Projekt/Properties unter dem Reiter Project :p
Gruß ERiK
-
in der neuen version von codeblocks gibts ne vorgabe für qt --> qtapplicaton