Qt-Programme per Kommandozeile bauen



  • Hallo,

    ich habe versucht ein simples Qt-Programm per Kommandozeile zu bauen, jedoch klappt dies nicht.

    Ich habe meine Qt-Bibliothek selber vom Source kompiliert (v. 5.7.0)

    Source Code des Test Programms

    #include <QApplication>
    
    int main(int argc, char *argv[]) {
        QApplication app(argc, argv);
    
        return app.exec();
    }
    

    Dann habe ich die msvc2015 Kommandozeile geöffnet und eingegeben:

    1. qmake -project
    2. qmake
    3. nmake

    Bei nmake gibt es diese Ausgabe:

    Microsoft (R) Program Maintenance Utility, Version 14.00.24210.0
    Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
    
            "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe" -f Makefile.Debug
    
    Microsoft (R) Program Maintenance Utility, Version 14.00.24210.0
    Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
    
            cl -c -nologo -Zc:wchar_t -FS -Zc:strictStrings -Zc:throwingNew -Zi -MDd -GR -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -EHsc /Fddebug\Desktop.pdb -DUNICODE -DWIN32 -DQT_GUI_LIB -DQT_CORE_LIB -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -I. -I. -I..\..\..\Libraries\Qt\qt-5\qtbase\include -I..\..\..\Libraries\Qt\qt-5-build\qtbase\include -I..\..\..\Libraries\Qt\qt-5\qtbase\include\QtGui -I..\..\..\Libraries\Qt\qt-5-build\qtbase\include\QtGui -I..\..\..\Libraries\Qt\qt-5\qtbase\include\QtANGLE -I..\..\..\Libraries\Qt\qt-5\qtbase\include\QtCore -I..\..\..\Libraries\Qt\qt-5-build\qtbase\include\QtCore -Idebug -I..\..\..\Libraries\Qt\qt-5\qtbase\mkspecs\win32-msvc2015 -Fodebug\ @C:\Users\Venek\AppData\Local\Temp\nm1B2A.tmp
    qt.cpp
    .\qt.cpp(1): fatal error C1083: Datei (Include) kann nicht geöffnet werden: "QApplication": No such file or directory
    NMAKE : fatal error U1077: ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\cl.EXE"": Rückgabe-Code "0x2"
    Stop.
    NMAKE : fatal error U1077: ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe"": Rückgabe-Code "0x2"
    Stop.
    

    Was ist da los?

    MfG Kenuk



  • Bist du sicher, daß die relativen Include-Pfade "..\..\..\Libraries" so stimmen?
    Welches ist das aktuelle Verzeichnis in deiner Konsole?



  • Meine Konsole befindet sich in einem Ordner auf dem Desktop, wo sich auch das Testprogramm (qt.cpp) befindet,
    Meine Bibliothek liegt in C:\Libraries\Qt\qt-5-build
    Die wurde vom Source gebaut und der Qt-Source liegt unter
    C:\Libraries\Qt\qt-5



  • Dann tipp mal in die Konsole

    dir "..\..\..\Libraries\Qt\qt-5\qtbase\include"
    

    ein. Siehst du die Dateien-Liste oder eine Fehlermeldung?



  • Das System kann den Angegebenen Pfad nicht finden
    Wieso nimmt qmake oder nmake den falschen Pfad?
    Mit dir "C:\Libraries\Qt\qt-5\qtbase\include" zeigt er die Liste


  • Mod

    Hast du es mal mit CMake versucht?
    CMake sollte dir es ermöglichen sowohl aus der IDE als auch von der Kommandozeile einfach zu bauen.



  • Das bringt mir aber nichts wenn ständig, von nmake die falschen Pfade genommen werden, wie ändere ich das?



  • Was gibt

    echo %QTDIR%
    

    aus?
    Und zeige mal deine ".pro"-Datei.



  • ######################################################################
    # Automatically generated by qmake (3.0) Do Aug 11 13:36:43 2016
    ######################################################################
    
    TEMPLATE = app
    TARGET = Qt
    INCLUDEPATH += .
    
    # Input
    SOURCES += qt.cpp
    
    echo %QTDIR%
    

    Ausgabe:

    %QTDIR%
    


  • Dann setze mal QTDIR (anscheinend hat die QT-Installation das nicht gemacht) in den Systemeinstellungen.

    Lies auch mal VS2015 + QT (bes. den Beitrag von Helmut.Jakoby).



  • Th69 schrieb:

    Dann setze mal QTDIR (anscheinend hat die QT-Installation das nicht gemacht) in den Systemeinstellungen.

    Ich habe die Lib ja auch selbst kompiliert, auf welchen Wert muss ich QTDIR setzen?

    EDIT:

    Ich habe jetzt eine Systemvariable namens QTDIR erstellt mit folgendem Wert:
    C:\Libraries\Qt\qt-5\qtbase\include;C:\Libraries\Qt\qt-5-build\qtbase\lib;C:\Libraries\Qt\qt-5-build\qtbase\bin

    ist das richtig? Denn das funktioniert immernoch nicht



  • Ich habe jetzt am Code etwas verändert nämlich die include Zeile: von #include <QApplication> zu #include <QtWidgets/QApplication>

    neue Meldung nach nmake:

    Microsoft (R) Program Maintenance Utility, Version 14.00.24210.0
    Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
    
            "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe" -f Makefile.Debug
    
    Microsoft (R) Program Maintenance Utility, Version 14.00.24210.0
    Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
    
            cl -c -nologo -Zc:wchar_t -FS -Zc:strictStrings -Zc:throwingNew -Zi -MDd -GR -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -EHsc /Fddebug\Qt.pdb -DUNICODE -DWIN32 -DQT_GUI_LIB -DQT_CORE_LIB -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -I. -I. -I..\..\..\..\Libraries\Qt\qt-5\qtbase\include -I..\..\..\..\Libraries\Qt\qt-5-build\qtbase\include -I..\..\..\..\Libraries\Qt\qt-5\qtbase\include\QtGui -I..\..\..\..\Libraries\Qt\qt-5-build\qtbase\include\QtGui -I..\..\..\..\Libraries\Qt\qt-5\qtbase\include\QtANGLE -I..\..\..\..\Libraries\Qt\qt-5\qtbase\include\QtCore -I..\..\..\..\Libraries\Qt\qt-5-build\qtbase\include\QtCore -Idebug -I..\..\..\..\Libraries\Qt\qt-5\qtbase\mkspecs\win32-msvc2015 -Fodebug\ @C:\Users\Venek\AppData\Local\Temp\nmCCD1.tmp
    qt.cpp
            link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:debug\Qt.exe @C:\Users\Venek\AppData\Local\Temp\nmD1B4.tmp
    qt.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall QApplication::QApplication(int &,char * *,int)" (__imp_??0QApplication@@QAE@AAHPAPADH@Z)" in Funktion "_main".
    qt.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: virtual __thiscall QApplication::~QApplication(void)" (__imp_??1QApplication@@UAE@XZ)" in Funktion "_main".
    qt.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: static int __cdecl QApplication::exec(void)" (__imp_?exec@QApplication@@SAHXZ)" in Funktion "_main".
    debug\Qt.exe : fatal error LNK1120: 3 nicht aufgelöste Externe
    NMAKE : fatal error U1077: ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\link.EXE"": Rückgabe-Code "0x460"
    Stop.
    NMAKE : fatal error U1077: ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe"": Rückgabe-Code "0x2"
    Stop.
    

Anmelden zum Antworten