Eclipse fit machen für C++ und Qt mit MinGW, MSYS und CDT
- April 15th, 2007
- Posted in Text
- By Andre
- Write comment
UPDATE: Mittlerweile gibt es von Trolltech ein Plugin, welches direkt C++ Entwicklung mit Qt und CDT in Eclipse möglich machen soll, zu finden unter diesen Link. Dort gibt es auch direkt von Trolltech eine Anleitung, wie man das Ganze zum Laufen bekommt. Wie auch in den Comments schon erwähnt, wurde diese Plugin erst ein paar Monate nach dem Erstellen dieses Tutorials veröffentlicht. Prinzipiel ist dieses Tutorial mitlerwiele überflüssig und nicht mehr up to date. Wer Lust hat, kann diese Anleitung trotzdem lesen
…
Während des Studiums musste ich mich wohl oder übel mit Eclipse anfreunden. Dabei verhielt es sich wie mit Bier: erst schmeckt es bitter, dann kommt man nicht mehr davon los. Sodann stellte sich nun die Frage, ob man nicht alles mit Eclipse programmieren kann: C++, C#, PHP, XML, … Die Antwort ist ja, naja fast
. Hier geht es aber erstmal nur darum, wie man Eclipse C++ und Qt tauglich macht und werde dies hier mal kurz und knapp (ich habe es jedenfalls versucht) beschreiben. Ich habe schon viele Threads in Foren gelesen und viele Blogs durchstöbert, aber immer fehlte ein Punkt oder die Lösung war nicht ganz so zufriedenstellend, wie ich es gerne hätte.
Voraussetzungen für diese(s) Tutorial / HowTo / Anleitung
Ich gehe davon aus, dass folgende Software installiert ist und funktioniert:
- Java (SDK, beinhaltet die Runtime)
- Eclipse, zu bekommen unter www.eclipse.org
Das ist erstmal die Grundlage. In Java kann nun schon fleißig losprogrammiert werden, aber wir wollen ja C++ programmieren mit Qt, also geht es weiter und wir kommen nun zu dem wichtigen Teil.
Installation von MinGW, MSYS und Qt
Zuerst brauchen wir den Compiler und andere wichtige Tools. Da wir ja auch Qt verwenden möchten können wir einige Schritte sparen. Normalerweise müssen wir nun von www.mingw.org/download.shtml alle benötigten Pakete runterladen, was den Compiler betrifft. Das brauchen wir aber nicht, da Trolltech ein fast komplettes Paket anbietet. Wir benötigen von dieser Seite aber trotzdem noch ein Paket, auf das nur schwer verzichtet werden kann: MSYS. Einfach das Executable runterladen (MSYS-1.0.10.exe), natürlich die aktuelle Version.
Nun geht es ab auf die Seite von Trolltech, um uns Qt runter zu laden. Auf der Startseite gibt es gleich einen großen Download Button, den wir auch betätigen, um in den Downloadbereich zu kommen. Bei dem Paket, was wir runterladen wollen, handelt es sich um die Qt/Windows Open Source Edition. Der eben noch aktuelle gewesene Dateiname ist: qt-win-opensource-4.2.3-mingw.exe, der auch gleich verrät, dass MinGW mit an Board ist. Hier noch mal schnell der Link zum Downloadbereich: http://www.trolltech.com/developer/downloads/qt/windows
Wir sollten nun 2 Externe Pakete (bezüglich Eclipse) runtergeladen haben:
- qt-win-opensource-4.2.3-mingw.exe
- MSYS-1.0.10.exe
Beide werden nun in der obigen Reihenfolge installiert. Bei der Installation von Qt wird gefragt, ob MinGW runtergeladen und mit installiert werden soll. Das machen wir natürlich. Haben sie jedoch MinGW schon installiert, brauchen sie nur den Pfad dorthin angeben. Als Empfehlung um spätere Probleme auszuschließen, sollten nur die Standard Verzeichnisse bei der Installation verwendet werden, bzw. nur Verzeichnisnamen ohne Lehrzeichen.
Konfiguration für MinGW und die Befehle make, qmake und g++
Nach der Installation der beiden Pakete müssen diese noch im PATH (Pfad) von Windows angegeben werden, damit die Befehle make, g++, qmake, … von überall aufgerufen werden können: Systemsteuerung -> System -> Erweitert -> Umgebungsvariablen. Im unteren Fenster (Systemvariablen) suchen sie nun nach der Zeile “Path C:\Windows\…” und klicken dann auf Bearbeiten. Die bestehenden Einträge dürfen nicht gelöscht werden!!! Sie fügen in der Zeile nur die neuen Pfade hinzu: zum Beispiel “C:\MinGW\bin für MinGW”, entsprechendes machen sie auch für MSYS und Qt, zum Beispiel “C:\msys\1.0\bin” und “C:\Qt\4.2.3\bin”. Wie oben schon gesagt, die bestehenden Einträge/Verzeichnisse nicht löschen, ganz wichtig. In der Eingabeaufforderung sollte nun möglich sein, spätestens nach einem Neustart de Systems, make –v, qmake –v, g++ -v aufrufbar sein.
Installation von CDT in Eclipse und Anpassung von mingw32-make.exe und make.exe
Nun fehlt nur noch CDT. Dies wird in Eclipse als Plugin installiert. Auf der Seite www.eclipse.org/cdt/downloads.php wird dies erklärt. In Eclipse auf Help -> Software Updates -> Find and Install. Dann “Search for New Features to install” -> Next. In diesem Fenster fügen sie einfach die neue Remotesite ein (die auf der Downlaodseite angegeben ist) und können dann das Plugin ganz leicht automatisch installieren. Eclipse CDT Remotesite anwählen -> Finish und dann die Pakete auswählen und installieren lassen. Das sollte es gewesen sein und CDT Plugin ist installiert.
Das einfache Kompilieren von C++ Dateien sollte jetzt schon funktionieren. Allerdings sei angemerkt, dass der make Befehl, den Eclipse benutzt, der von MSYS ist und nicht der von MinGW. Dieser nennt sich “mingw32-make.exe”. Nun gibt es zwei Möglichkeiten: Entweder man ändert den make Befehl in den Projekteinstellungen von Eclipse oder man benennt einfach die Datei “make.exe” im MSYS-Bin-Verzeichnis in “make.exe.old” um und man macht eine Kopie von der Datei “mingw32-make.exe” im MinGW-Bin-Verzeichnis und benennt diese in “make.exe” um. Somit wird nun immer beim Aufruf von make in Wirklichkeit die Kopie von “mingw32-make.exe” aufgerufen. Bei den Projekteinstellungen sollte auch immer der “PE Windows Parser” ausgewählt sein (Wichtig!). Zudem sollten die Dateirechte von Qt, MSYS und MinGW angepasst werden, wenn sie als Benutzer arbeiten und nicht als Admin. Aber das nur nebenbei.
Kommen wir zum nächsten Schritt. Um weitere spätere Fehlermeldungen vorzubeugen, gerade beim Debugen, sollte man in das Qt-Bin-Verzeichnis wechseln und das Kommando “qtvars compile_debug” eingeben. Danach kann man erstmal einen Kaffe trinken gehen.
BTW: Damit das Debuggen nachher auch wirklich funktioniert, sollte “gdb” (GNU Source-Level Debugger) installiert sein, zu bekommen unter diesen Link, wo es übrigens auch alle anderen benötigten Komponenten gibt, die man zum Arbeiten mit MinGW benötigen könnte.
Konfiguration von Eclipse
Nun geht es los Eclipse zu konfigurieren. Im Normalfall kompiliert man Programme die Qt verwenden erst mit “qmake –projekt”, dann mit “qmake” und zu guter letzt “make”. Diese Reihenfolge müssen wir jetzt auch Eclipse beibringen. Dazu benutzen wir die Funktion für externe Tools: Run -> External Tools -> External Tools. In diesem Fenster nun links mit der rechten Maustaste auf “Program” und dann “New”. Als Namen geben wir ganz oben “qmake –project” ein. Im Reiter “Main” gibt man nun bei “Location” den Pfad zu qmake ein, zum Beispiel: “C:\Qt\4.2.3\bin\qmake.exe”. Das “Working Directory” setzt man auf “${project_loc}” und die “Arguments” auf “-project”. Im nächsten Reiter “Refresh” bei “Refresh resources upon completion” einen Harken setzten. Das Ganze machen wir jetzt noch einmal, nur das wir beim Namen ganz oben “qmake” eingeben und bei Arguments den Parameter “–project” weg lassen. Ansonsten sind die Einstellungen identisch. Die beiden externen Tools entsprechen nun den Kommandos “qmake –project” und “qmake”.
Hello World und die Projekteinstellungen
Nun können wir ein neues „Standard Make C++ Projekt“ anlegen. (PE Windows Parser auswählen nicht vergessen.) Erstellen sie nun einfach eine neue Source Datei mit den Namen “test.cpp”. Damit sie nicht noch nach einer Hello World Datei suchen müssen hier schnell der Quellcode:
#include <qapplication.h>
#include <qpushbutton.h>
int main( int argc, char **argv ) {
QApplication a( argc, argv );
QPushButton hello( "Hello world!", 0 );
hello.resize( 250, 30 );
hello.show();
return a.exec();
}
Gehen sie nun auf Project -> Properties. Nun sind einige Einstellungen zu tätigen: Zuerst auf Builders und dann rechts auf Import. Jetzt einfach die beiden externen Tools “qmake” und “qmake –project” importieren und die Reihenfolge anpassen. Nach ganz oben kommt “qmake –project” und dann “qmake”. Danach folgt der Rest: CDT Makefile Builder und der Scanner Configuration Builder. Noch einmal auf Inculde Paths klicken und “C:\MinGW\include” und “C:\Qt\4.2.3\include” hinzufügen, je nachdem wo sie MinGW und Qt installiert haben. Wenn noch nicht geschehen, den Binary Parser auf “PE Windows Parser” umstellen, zu finden unter “Make Project”.
Normalerweise sollte es das gewesen sein und das Project kann gebaut werden: Project -> Build Project. Beim compilieren werden nun die benötigten Kommandos: “qmake -project”, “qmake” und “make” nacheiander automatisch ausgeführt. Im Projektverzeichnis sollte nun eine EXE-Datei zu finden sein die sie starten: “Hello World”.
Done
Ich hoffe ich konnte Ihnen mit meinem kleinen Tutorial weiterhelfen. Bei mir hat es alles so einwandfrei funktioniert und ich hoffe bei ihnen auch. Wenn es noch Fragen gibt, können sie diese hier im Commentbereich stellen oder die Foren qtforum.de oder www.eclipseproject.de besuchen. Zudem wäre ich dankbar, mich auf Fehler oder sonstige Ungereimtheiten aufmerksam zu machen oder mich einfach wissen zu lassen, ob der Beitrag ihnen geholfen hat.








sehr gute Beschreibung. Danke für die Mühe.
Hy
Vielen Herzlichen dank ist echt ein Top TuT
danke danke .. Imprinzip exakt das selbe wie unter Linux (also von den Befehlen her) aber troztdem Danke.
Gute Beschreibung !
ThX
Hi,
mittlerweile bietet Trolltech das Ganze als Paket zum Download an. Zudem, schon 2005 gab es unter “www.joerg-reiling.de/qt4.0-eclipse3.1.0/” ein sehr sehr änliches Tutorial, halt nur auf Englisch…
Grüße
Andreas
Hallo Andreas,
in den “Related posts” sind zwei Beiträge aufgeführt, die bereits auf das von Dir erwähnte Paket/Plugin hinweisen. Das Tutorial entstand jedoch ein paar Monate vor dem Erscheinen des Plugins. Da ich persönlich Qt nicht mehr benötige, bin ich der Sache auch nicht weiter nachgegangen und habe deshalb nur darauf verwiesen, wie in den anderen Beiträgen zu lesen ist.
Das von Dir erwähnte Tutorial von 2005 unterscheidet sich bei genauerem Lesen gerade in der zweiten Hälfte deutlich von meinem. Dass beim allgemeinen Ablauf der Installation von Qt, MinGW, Eclipse und CDT sich gewisse Parallelen aufzeigen, liegt sicherlich in der Sache der Natur
, da beide Tutorials und auch ALLE anderen, die es im Netz zu finden gibt, das selbe Ziel haben. Deine Wortwahl „sehr sehr ähnlich“ finde ich persönlich dann doch etwas übertrieben. Zusätzlich verweise ich noch mal auf den letzten Satz meiner Einleitung.
Grüße und bis dann
Andre
Ich benutze das Plugin von Trolltech und habe auch alle in diesem Artikel beschriebenen Programme installiert. Allerdings kann ich überhaupt nicht debuggen. Leider konnte mir dazu auch noch keiner im qtforum oder eclipseproject weiterhelfen. (siehe http://eclipseproject.de/modules.php?name=Forums&file=viewtopic&t=4743 und http://www.qtforum.de/forum/viewtopic.php?t=6176)
Matthias
Servus Matthias,
soweit ich mich erinnern kann, musst du auch den “GNU Source-Level Debugger” installieren, zu finden unter: http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=20507
-> Current Release: gdb-5.2.1
Der Dateiname lautet: gdb-5.2.1-1.exe (nur falls der Link irgend wann nicht mehr stimmen sollte)
Normalerweise sollte es dann klappen. Aber ich sehe gerade, dass ich das schon im Text oben geschrieben habe. Also gehe ich davon aus, dass du den Source-Level Debugger schon installiert hast. Aufgrund der Fehlermeldung, kann ich dann nur noch vermuten, dass der Debugger eventuell von Eclipse nicht gefunden wird. Daher mal schauen, ob in den Umgebungsvariablen der Pfad eingestellt und ob direkt in Eclipse der Pfad zum Debugger eingetragen wurde.
Nun habe ich gerade vor 3 Tagen mein System neu aufgespielt und kann in meinen Einstellungen nicht nachschauen
. Aber vielleicht haben dir die Tipps trotzdem geholfen.
Beste Grüße
Andre
Ich habe das Problem, dass ich überhaupt nicht weiß wo ich in Eclipse was einstellen sollte, und zudem 5 verschiedene Debugger angeboten werden, wobei ich nicht weiß wie ich deren Einstellungen bearbeiten kann. wo ich den Pfad einstellen sollte ist mir daher auch unklar.
Servus,
siehe Abschnitt “Konfiguration für MinGW und die Befehle make, qmake und g++” und in Eclipse kannst du die Einstellungen unter “Run -> Run Configurations… -> Reiter: Debugger” kontrollieren.
Der richtige Debugger ist: “MinGW gdb Debugger”
Zu finden normalerweise hier: “C:\mingw\bin\gdb.exe”
EDIT: Aber ich weiß nicht, in wie weit der MinGW Debugger mit Qt-Applikationen zusammenarbeitet oder ob Qt sogar unter Umständen einen eigenen Debugger benötigt!!!
Beste Grüße
Andre
Hallo,
ich habe Eclipse mit CDT installiert. Compilieren und Programm starten funktionieren, jedoch werden Eingabefehler erst nach dem Compilieren angezeigt. Wo kann ich einstellen, dass die Eingabe sofort überprüft wird, wie es beim Programmieren in JAVA unter Java->Editor->Fehler bei Eingabe melden einstellbar ist.
Gibt es dafür eventuell ein spezielles Plugin, welches die Richtigkeit des Codes On-The-Fly überprüft?
Meines Wissens nach, gar nicht. Fehler werden erst beim Kompilieren aufgedeckt. Ein Plugin ist mir nicht bekannt, wüsste auch nicht, wie man das technisch realisieren sollte/könnte.
Ein sehr gutes Tutorial woot woot^^.Dieses Tut hat mir viel geholfen.Jedoch noch anzumerken dass man die debug libraries builden musst. Start-Alle Programme-Qt by trolltech-build debug libraries. Wenn jemand das fertige Paket von trolltech nutzen will, dann sollte er alle Schritte des tutorials verfolgen außer :”Konfiguration von Eclipse”, das Umkopieren der make Dateien, an der Projekteinstellung nichts ändern. Näheres zu finden in dem tutorial des trolltech plugins.
Eine Frage habe ich noch: Wie installiere ich den Gdb? Damit plage ich mich jetzt schon ziemlich lange herum, aber es will nicht vernünftig funktionieren.
Hm, normalerweise exe File runterladen, starten, Installations-Verzeichnis angeben (C:\mingw\bin\), danach eventuell noch die Path-Variable setzen, fertig. Ist eigentlich nichts anderes, wie MSYS oder MINGW installieren.
Danke fürs Tutorial
Ich habs mit den aktuellsten Versionen gemacht
QT 4.4.0
Eclipse SDK 3.3.2
Eclipse C/C++ Development Tools (CDT) 4.0.3
Qt C++ Eclipse Integration 1.4.0
MSYS 1.0.11
Du führst vor dem Kompilat mit mingw (mingw32-make) ein “qmake -project” und “qmake” aus. Dabei wurde mir immer das .pro File verädnert (meine includes entfernt), was zu Buildfehlern führte. Wenn ich es aber mit “qmake” und “make” (make von msys) und dann den mingw32-make, dann kompilierts alles gut.
Greetz Brodi
ein wirklich gutes tutorial. Funktioniert auch noch mit der qt version 4.4.1!
Vielen Dank!
Dieses Tutorial ist wirklich sehr sehr hilfreich – vielen Dank.
GDB: Startete bei mir trotz korrekter installation nicht. Bis ich auf die Idee kam, unter Project->Properties->Run/Debug Settings eine “configuration” anzulegen. Hier findet man auch eine Registerkarte “Dubbuger”, wo auch bereits
“GDB debugger: dgb”
eingetragen war. Allerdings hatte der nichts mit meinem Debugger im minGW Verzeichnis zu tun. Also “Browse” und auswählen.
Allerdings läuft er bei mir immernoch nicht tadellos.
Wer sich gerne darüber unterhalten will: mailto casius@gmx.net subject: [QT|Debug|Eclipse]
Vielleicht kann mir auch mal jemand verraten, wie ich ein Release anstatt immer eine Debugversion ertellen kann? Mit “Build Project” wird immer “mingw32-make debug” ausgeführt. Lösche ich das “debug aus den Variablen in der Build Config, passiert dannach gar nichts mehr.
Release erstellen:
In meinem Target “Qt Release Build” war “make” und nicht “makegw32-make” eingetragen.
Jetzt läuft es.
Soll eigentlich das hier heißen
“mingw32-make”
erstmal dankeschön für das sehr gut beschriebene tutorial. ich habe eigentlich alles so gemacht wie bei dir beschrieben. dennoch kann ich dein beispielprogramm nicht ausführen.
im code steht immer in der 1. und 2. zeile ein fragezeichen und wenn ich mit der maus darauf zeige dann kommt “unresolved inclusion”.
sobald ich project -> build project ausführe, dann kommt eine vielzahl von fehlern. für die 1.zeile z.B. qapplication no such file or directory.
habe ich hier noch irgendwas vergessen oder übersehen einzustellen, wenn ich das richtig interpretiere dann heißt das ja, dass er die Qt bibos nicht findet.
kann mir hier jemand bitte weiterhelfen?
Servus,
die Fehlermeldung sagt eigentlich schon alles: Der Kompiler kann die beiden includierten Dateien (qapplicatio.h, …) nicht finden. Schau doch mal, ob die Verzeichnisse “C:\MinGW\include” und “C:\Qt\4.2.3\include” bei dir stimmen und diese auch korrekt in den Projekteinstellungen angegeben werden. Wenn du Qt und MinGW in einem anderen Verzeichnis installiert hast, musst du die Verzeichnisse entsprechend anpassen. Sicherlich gibt es bei Qt schon eine neuere Version als 4.2.3.
Bis dann, Andre
Hallo,
ich habe dasselbe Problem, wie Marcus. Wie in dem Tut beschrieben, habe ich die Includepaths in den Projekteinstellungen eingefügt. Die Pfade sind defintiv die verlangten (d:\qt\include) .. allerdings habe ich bemerkt, dass sich direkt in dem include-ordner keine Bibliotheken befinden. Er beinhaltet nur weitere Unterordner. In diesen sind dann auch die gefragten Bibliotheken (d:\qt\include\qt). Gebe ich also diese Pfade an, verschwinden zwar die Fragezeichen, dafür findet er dann die anderen Dateien nicht. “… no such file or directory”.
Kann einer helfen? Wäre immens wichtig.
Danke
Sorry, da muss ich leider passen. Ich dachte eigentlich, dass das Plugin/die Integration für Eclipse derartige Probleme löst und dieses Tutorial eigentlich überflüssig sein müsste:
http://trolltech.com/developer/eclipse-integration
Auf der gleichen Seite gibt es auch Installationsanleitungen, “Getting Started” und eine Doku. Macht auf den ersten Blick eigentlich einen guten Eindruck. Anhand der Anleitungen sollte es dann aber funktionieren.
Wenn es mit der Eclipse Integration klappen sollte, schreibt es hier bitte in den Comments-Bereich, damit zukünftige Leser schneller ans gewünschte Ziel gelangen. Dann weise ich in der Einleitung von diesem Tutorial gleich darauf hin.
Grüße und bis dann, Andre
also mit dem integration pack von Qt für eclipse, klappt das ganze problemlos. man muss nur noch für Qt und MinGW die umgebungsvariablen setzen und fertig.
beim ersten aufruf eines Qt projektes unter eclipse wird man auch direkt nach dem standort von Qt gefragt. danach kann es direkt mit Qt losgehen.
Hi,
ich habe mir das neue Qt4.4.3-mingw runtergeladen und das qt-eclipse-integration-win32-1.4.3.
Habe dann nach der Anleitung erst
- qt
- dann msys
installiert und anschließend noch gdb installiert.
Und anschließend das Integretion-Pack. (PS: Benutze Eclipse IDE for C/C++ Developers (68 MB), da ist CDT schon dabei).
Dann habe ich eclipse so konfiuriert wir hier beschrieben (Umgebungsvariablen habe ich natürlich auch gesetzt):
–> qt (auch ui) Anwendungen laufen
==> Es läßt sich aber nicht debuggen. Warum???
Bsp:
Ich habe eine Projekt unter c:\workspace\FindDialog\ ,
die exe liegt unter c:\workspace\FindDialog\debug\FindDialog.exe.
Wenn ich die exe debuggen will, mache ich rechtsklick auf die exe->Debug As->Local C/C++ Application->MinGW gdb degugger.
=>In der console von eclipse steht:
“c:\workspace\FindDialog”: Invalid argument
=> Popup-Box:
Problem Occured
‘Launching FindDialog.exe’ has encountered a problem.
Failed to set programm arguments, environment or working directory
ich habe das mit dem debuggen jetzt hinbekommen. einfach auf den link klicken und installieren. funktioniert sofort und ohne probleme!!!
http://prdownloads.sf.net/mingw/gdb-5.2.1-1.exe?download
Hi
erstmal Danke für die Gute Anleitung.
Ich hab MinGW-5.1.4 heruntergeladen und installiert. Leider befindet sich im Ordner MinGW\bin die Datei mingw32-make.exe nicht.
Dort gibt es nur ähnliche:
mingw32-c++.exe
mingw32-g++.exe
mingw32-gcc.exe
Ich habe alle nacheinander mal in make.exe umbenannt. Leider kommt dann immer noch die Fehlermeldung in eclipse. (Launch failed. Binary not found.)
Was soll ich jetzt machen?
Servus, alternativ kannst du auch die Datei “make.exe” von MSYS verwenden. Zu finden unter “msys/bin”. Wenn du das Verzeichnis eh schon im Path angegeben hast, sollte es auch funktionieren. Prinzipiell sollte das “make” von MSYS genau das Gleiche machen, wie das “make” von MinGW (also mingw32-make.exe). Allerdings stimmten damals, soweit ich mich noch erinnern kann, die Versionen der beiden Make-Befehle von MSYS und MinGW nicht überein, weshalb wir logischerweise die von MinGW hergenommen haben.
Warum aber nun die Datei “mingw32-make.exe” nicht mehr existiert, kann ich dir auch nicht beantworten. Da müsste man dann mal Google befragen.