Projekte mit Qt und Dev-cpp(MinGW) kompilieren



  • Also die einfachste Methode ist es den Dev-Cpp mit MinGW zu installieren und QT ohne MinGW. Dann musst du nur während der installation von QT den Ordner angeben, wo Dec-Cpp den MinGW Compiler plaziert hat.



  • Hallo,

    erstmal vielen Dank an mosta die Anleitung ist Spitze.
    Jetzt hab ich aber noch eine Frage zur Codevervollständigung. Diese zeigt mit nur meine selbst geschriebenen Funktionen an und nicht die schon in Qt enthaltenen. Gibt es da einen Trick??

    Bin für jeden Tipp dankbar.

    Gruß
    mlc



  • meinst du für methoden? den soweit mir bekannt funktioniert das auch mit QT Klassen(komplett ohne trick). Aber die Code completion funktion läuft eh nicht richtig unter Dev-Cpp. Da solltest du aber mal bei bloodshed nachhacken.



  • Hallo,

    weil es wirklich sehr lästig ist, für jedes Projekt die Pfade neu anzupassen, habe ich einen Installer (in Perl) geschrieben, der einen das alles abnimmt - man muss nur den Pfad zum QT Verzeichniss angeben und der Installer erledigt den Rest (man kann nach der Ausführung des Installers sofort anfangen ;-)). Hier ist der Code - viel Spaß 🙂

    #!/usr/bin/perl
    #
    # me = 
    #
    use strict;
    use Cwd;
    
    my @qt4libs = ();
    my @qt4inc = ();
    
    my $qtDir = ();
    my $qt4libs_ = "";
    my $qt4inc_ = "";
    my $devcpplib = "";
    
    print "QT4.0 for Dev-Cpp Wizard\n\n";
    
    # getting full path to qt dir
    do {
      print "Full QT path: ";
      chomp($qtDir = <STDIN>);
      print "--> invalid\n" unless -d $qtDir;
    } until(-d $qtDir);
    
    $qtDir =~ s/(\\|\/)$//;
    
    # get libs
    unless(-d "${qtDir}\\lib") {
      print stderr ("Couldnt find '${qtDir}\\lib'\n");
      exit 1;
    }
    
    push(@qt4libs, $_) foreach(glob "${qtDir}\\lib\\*.a");
    
    # get dirs
    unless(-d "${qtDir}\\include") {
      print stderr ("Couldnt find '${qtDir}\\include'\n");
      exit 1;
    }
    
    opendir(__dh__, "${qtDir}\\include\\") || die $!;
    @qt4inc = map { "${qtDir}\\include\\$_" } (grep { !/^\.{1,2}$/ && -d "${qtDir}\\include\\$_" } readdir __dh__);
    push(@qt4inc, "${qtDir}\\include");
    closedir __dh__;
    
    # try to write config
    unless(-d "Templates") {
      print stderr ("Couldnt find ./Templates");
      exit 1;
    }
    
    # join @qt4libs & @qt4inc & setting $devcpplib
    $qt4libs_ = join "\_@\@_", @qt4libs;
    $qt4inc_ = join ";", @qt4inc;
    $devcpplib = cwd . "/lib";
    
    # writing config
    chdir "Templates";
    
    open(__fh1__, ">QT4 Application.template") || die $!;
    open(__fh2__, ">QT4_Application_main.cpp.txt") || die $!;
    
    print __fh1__ <<EOF;
    [Template]
    ver=1
    Name=QT 4.0 Application
    IconIndex=0
    Description=A basic template for QT 4.0 applications
    Catagory=Basic
    
    [Unit0]
    CName=
    CppName=main.cpp
    C=
    Cpp=QT4_Application_main.cpp.txt
    
    [Project]
    IsCpp=1
    NoConsole=1
    IsDll=0
    UnitCount=1
    Type=0
    Name=QtApp
    Linker=$qt4libs_
    Includes=$qt4inc_
    Libs="$devcpplib"
    EOF
    ;
    
    print __fh2__ <<EOF
    #include <QApplication>
    #include <QFont>
    #include <QPushButton>
    
    int main(int argc, char *argv[]) {
        QApplication    app(argc, argv);
        QPushButton     quit("Servus Welt!");
    
        quit.resize(200, 30);
        quit.setFont(QFont("Arial", 18, QFont::Bold));
        QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));
        quit.show();
    
        return app.exec();
    }
    EOF
    ;
    
    print "... done :-)\n";
    


  • Jens G. schrieb:

    Hallo,

    weil es wirklich sehr lästig ist, für jedes Projekt die Pfade neu anzupassen, habe ich einen Installer (in Perl) geschrieben, der einen das alles abnimmt - man muss nur den Pfad zum QT Verzeichniss angeben und der Installer erledigt den Rest (man kann nach der Ausführung des Installers sofort anfangen ;-)). Hier ist der Code - viel Spaß 🙂

    P.S.: Das Script muss im Programmverzeichnis von Dev-Cpp ausgeführt werden 😉



  • Hi,

    hat bei mir prima geklappt.

    Für neue Projekte kopiere ich die entsprechenden Einträge auf der Projektdatei.
    Das spart Arbeit.

    Danke fuer diesen tollen Artikel. Ist sonst echt eine Kopfnuss.

    Gruss



  • Hallo,
    ich habe Probleme beim Ende des 2.Schrittes. Ich komme bis zu der Anweisung: "Dann klicken Sie auf "OK" und anschließend sollten Sie noch mal versuchen, das Programm zu kompilieren. Wenn es immer noch nicht funktioniert, sollten Sie erst einmal überprüfen, ob Sie irgendetwas übersprungen haben, oder im Forum posten." Das nochmalige Compilieren funktioniert nicht, obwohl ich die Verzeichnisse alle eingebunden habe.
    Würde mich sehr freuen, falls mir da jemand weiterhelfen könnte.



  • könntest du vlt. noch sagen was nicht klappt und was für fehlermeldungen kommen?



  • Eine Fehlermeldung ist z.B: "QApplication:No such file or directory"
    Also die gleiche Fehlermeldung wie vor dem Ausführen der ganzen Schritte.

    Danke für die Antwort



  • hast du auch deine ricntigen Pfade von deinem System angegeben? wo hast du den QT inszalliert(Pfad)



  • Also ich habe den Qt in C:\Qt\4.2.2 installiert.
    Der Wert der Systemvariable Path endet mit Wbem, dazu habe ich
    \C:\Qt\4.2.2\bin angefügt, richtig?
    Beim Ausführen des Kommandos make bekomme ich folgende Fehlermeldung:
    "Der Befehl "make" ist entweder falsch geschrieben oder
    konnte nicht gefunden werden."
    Woran kann das liegen, denn die Befehle qmake -project und qmake werden reibungslos ausgeführt?



  • Mittlerweile wird in der Kommandozeile von Qt kein Fehler mehr erzeugt, aber das Kompilieren des Projekts funktioniert dennoch nicht.
    Ich bekomme folgende Fehlermeldung: ***missing separator.Stop



  • wieso der slash(" \ ") vor dem C oder war das nur ein Tipfehler?



  • Hallo zusammen, ich wollte mich auch der Debatte anschließen, da ich ganz ähnliche Probleme bei kompilieren habe: Der Beitrag ist natürlich ohne Frage super, leider scheint bei mir die oben beschriebene Vorgehensweise nicht immer zu funktionieren, denn auch ich bekomme die Meldung:

    25 C:\DevCpp\textures\glwidget.cpp QtOpenGL: No such file or directory.
    

    An dem Code selber kann es nicht liegen, da das Ganze aus Examles von QT4 kommt. Die einzelnen Schritte der Vorgehensweise habe ich immer wieder penibel wiederholt, doch leider will bei mir das nicht wirklich klappen. Die Standardprojekte (Examples QT4) scheinen bei mir zu laufen, doch leider nicht die Projekte bei denen es um die Einbindung von der OpenGL geht 😢 Das komische an der Ganzen Sache ist jedoch, dass die QtOpenGL - Bibliotheken und auch header von mir genau so eingebunden worden sind, wie ich auch bei den anderen Projekten gemacht habe, und trotzdem diese, oben genannte Meldung 😢

    Hier noch ein mal die Schritte die ich machte:
    1. Neues QT4-Projekt erstellen
    2. Projekt-Optionen einstellen
    3. Compiler-Optionen einstellen
    4. qmake -project und qmake ausführen
    5. Makefile.Release unter eigenes Mikefile eintragen

    QT4 und Dev-Cpp sind installiert
    Unter Projekt-Optionen sind die QT-Header und Libs eingetragen
    Unter Compiler-Optionen->Verzeichnisse->C++Includes wurden auch die QT4-Verzeichnisse für die Header eingetragen

    Wie gesagt, habe mich heute mind. 4-Stunden damit rum geschlagen und es ist schon fast 1:00 Uhr. Ich hoffe mir kann hier jemand auch helfen!?
    Gruß delphisual



  • ohne den makefile und dem quellcode kann ich da nicht viel sagen aber es wär besser wenn du dafür einen Beitrag im "Andere GUI's Forum" postest.



  • Ok, Danke.

    Gruß delphisual



  • Ich bekomme aber immernoch eine Fehlermeldung:
    ...\Qt\Makefile.win [Build Error] [Projekt1.exe] Error 1

    Kenn mich leider gar nicht damit aus. Was sagt mir die Fehlermeldung denn außer das es nicht funktioniert und wie kann ich das beheben?





  • Hallo Leute,

    ich hoffe, ich habe hier jetzt nichts überlesen, aber ich habe trotz der guten Anleitungen hier ein etwas abweichendes Problem, ähnlich zu dem von ankogre. Ich habe nämlich nur die Qt-Open-Source-Version mit MinGW runtergeladen, und benutze kein DevC++. Ich habe es also normal installiert (unter Windows XP), sicherheitshalber configure.exe ausgeführt und ein kleines Hello-World-Programm gemacht.
    Code:
    qmake -project
    qmake hello.pro
    Code:
    qmake -project
    qmake hello.pro
    Code:
    qmake -project
    qmake hello.pro

    funktioniert wie erwartet, aber wenn ich dann make aufrufe, erhalte ich die Fehlermeldung:
    Zitat:
    Der Befehl "mingw32-make" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

    Dabei ist es egal, ob ich das Qt-Verzeichnis in die PATH-Variable geschrieben habe, falls diese Information wichtig ist.

    Viele Grüße,

    Tlyman

    Tschuldigung das ich erst so spät antworte,

    versuchst du auch das makfile zu kompilieren was dir qmake raus schmeißt? und die qmake bin ist auch in der System PATH Variable angemeldet?



  • --


Anmelden zum Antworten