Fehler beim Build erstellen QT6



  • Ich habe ein Video gefunden (https://youtu.be/2qsR8Dw8uzA), wo das dynamische und statische Linken erklärt wird, allerdings bekomme ich immer folgende Fehlermeldung:

    CMake Error at C:/CMake/share/cmake-3.21/Modules/CMakeTestCXXCompiler.cmake:62 (message):
      The C++ compiler
        "C:/Strawberry/c/bin/c++.exe"
      is not able to compile a simple test program.
    
      It fails with the following output:
        Change Dir: C:/Qt/6.1.3/Src/CMakeFiles/CMakeTmp
        Run Build Command(s):C:/cygwin64/bin/ninja.exe cmTC_0cd7c && [1/2] Building CXX object 'CMakeFiles\cmTC_0cd7c.dir\testCXXCompiler.cxx.obj'
        FAILED: CMakeFiles\cmTC_0cd7c.dir\testCXXCompiler.cxx.obj
        C:\Strawberry\c\bin\c++.exe    -o 'CMakeFiles\cmTC_0cd7c.dir\testCXXCompiler.cxx.obj' -c 'C:\Qt\6.1.3\Src\CMakeFiles\CMakeTmp\testCXXCompiler.cxx'
        /bin/sh: C:Strawberrycbinc++.exe: command not found
        ninja: build stopped: subcommand failed.
    -- Configuring incomplete, errors occurred!
    
      CMake will not be able to correctly generate this project.
    Call Stack (most recent call first):
      CMakeLists.txt:11 (project)
    
    See also "C:/Qt/6.1.3/Src/CMakeFiles/CMakeOutput.log".
    See also "C:/Qt/6.1.3/Src/CMakeFiles/CMakeError.log".
    CMake Error at qtbase/cmake/QtProcessConfigureArgs.cmake:828 (message):
      CMake exited with code 1.
    

    Die Logdatei und die Error Datei bringen mich leider auch nicht weiter.

    Wo liegt hier mein Fehler? Perl, Python, Cmake, Ninja sind installiert.



  • @tomatriga sagte in Fehler beim Build erstellen QT6:

    C:Strawberrycbinc++.exe: command not found
    

    Fehlen da wirklich die Slashes (bzw. Backslashes)? Oder existiert der Pfad überhaupt?

    Was für einen Compiler benutzt du denn (MinGW, MSVC, ...)?



  • Für mich sieht das so aus als ob cygwin64's ninja nicht mit Backslashes klarkommt.

    @tomatriga
    Musst du cygwin verwenden? Cygwin hat schon seine Daseinsberechtigung. Aber wenn es anders auch geht, dann ist es anders fast immer besser.
    Wenn du einfach nur auf Windows C++ Programme erstellen willst, dann würde ich dir Visual Studio empfehlen (die Community Edition von Visual Studio ist gratis). Und falls du die Visual Studio IDE nicht verwenden willst: du kannst auch CMake mit dem Visual Studio Compiler verwenden.



  • Habe jetzt mal Cygwin runter getan und MinGW genutzt.
    Allerdings hat dies nichts an der Fehlermeldung gebracht, außer das jetzt MinGw genutzt. Jetzt sieht die Meldung so aus:

    + C:\Qt\6.1.3\Src\qtbase\configure.bat -top-level -release -opensource -confirm-license -prefix C:\QT\6.1.3\Build
    'C:/CMake/bin/cmake.exe' '-DCMAKE_INSTALL_PREFIX=C://QT//6.1.3//Build' '-DCMAKE_BUILD_TYPE=Release' '-G' 'Ninja' 'C:/Qt/6.1.3/Src'
    -- The CXX compiler identification is unknown
    -- The C compiler identification is unknown
    -- The ASM compiler identification is unknown
    -- Found assembler: C:/Strawberry/c/bin/gcc.exe
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - failed
    -- Check for working CXX compiler: C:/Strawberry/c/bin/c++.exe
    -- Check for working CXX compiler: C:/Strawberry/c/bin/c++.exe - broken
    CMake Error at C:/CMake/share/cmake-3.21/Modules/CMakeTestCXXCompiler.cmake:62 (message):
      The C++ compiler
    
        "C:/Strawberry/c/bin/c++.exe"
    
      is not able to compile a simple test program.
      It fails with the following output:
        Change Dir: C:/Qt/6.1.3/Src/CMakeFiles/CMakeTmp
    
        Run Build Command(s):C:/MinGW/bin/ninja.exe cmTC_3e64f && [1/2] Building CXX object CMakeFiles\cmTC_3e64f.dir\testCXXCompiler.cxx.obj
        FAILED: CMakeFiles/cmTC_3e64f.dir/testCXXCompiler.cxx.obj
        C:\Strawberry\c\bin\c++.exe    -o CMakeFiles\cmTC_3e64f.dir\testCXXCompiler.cxx.obj -c C:\Qt\6.1.3\Src\CMakeFiles\CMakeTmp\testCXXCompiler.cxx
        ninja: build stopped: subcommand failed.
    
      CMake will not be able to correctly generate this project.
    Call Stack (most recent call first):
      CMakeLists.txt:11 (project)
    
    -- Configuring incomplete, errors occurred!
    
    See also "C:/Qt/6.1.3/Src/CMakeFiles/CMakeOutput.log".
    See also "C:/Qt/6.1.3/Src/CMakeFiles/CMakeError.log".
    CMake Error at qtbase/cmake/QtProcessConfigureArgs.cmake:828 (message):
      CMake exited with code 1.
    

    @Th69
    Ich nutze Mingw

    @hustbaer
    Spätestens aber bei GUI Anwendungen, oder wenn ich Sie auch für Linus anbieten will, bin ich wieder bei QT.

    Edit: Habe mal die Cmake Files gelöscht und nun funktioniert es.



  • @tomatriga sagte in Fehler beim Build erstellen QT6:

    Spätestens aber bei GUI Anwendungen, oder wenn ich Sie auch für Linus anbieten will, bin ich wieder bei QT.

    Visual Studio ist eine IDE mit einem C++ Compiler. Qt ist eine Library. Was hat jetzt das eine mit dem anderen zu tun? Du kannst wunderbar Qt auf Windows verwenden und die Qt Anwendung mit dem Visual Studio C++ Compiler übersetzen.



  • Das Visual Studio eine IDE ist, ist mir bewusst.
    Allerdings lässt sich mit dem QT Creator besser die GUI bauen.

    Aber selbst wenn ich VS nutze, muss ich QT dennoch fürs statische Linken selbst bauen.

    Nun habe ich aber ein neues Problem:

    configure habe ich durchlaufen lassen mit folgendem Befehl:

    configure -release -opensource -confirm-license -prefix C:\QT\6.1.3\Build 
    

    Die wurde auch am Ende abgeschlossen mit der Meldung:

    Qt is now configured for building. Just run 'cmake --build . --parallel'
    
    Once everything is built, you must run 'cmake --install .'
    Qt will be installed into 'C:/Qt/6.1.3/Build'
    
    To configure and build other Qt modules, you can use the following convenience script:
            C:/Qt/6.1.3/Build/bin/qt-configure-module.bat
    
    If reconfiguration fails for some reason, try to remove 'CMakeCache.txt' from the build directory
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Qt/6.1.3/Src
    

    Nun bekomme ich allerdings beim Aufrufen von

    make -j8
    

    die Meldung

    make: *** No targets specified and no makefile found.  Stop.
    

    und es ist auch keine make Datei in dem Verzeichnis zu finden.

    Durch den configure Befehl müsste doch aber die make Datei erstellt wurdens ein. Was könnte ich noch probieren oder wo könnte ich noch nachschauen?



  • Kannst du nicht richtig lesen?

    Qt is now configured for building. Just run 'cmake --build . --parallel'
    

    make und cmakesind zwei verschiedene Programme.



  • @Th69 sagte in Fehler beim Build erstellen QT6:

    cmake --build . --parallel

    Das hatte ich zwar gelesen, doch da ich der Anleitung aus dem Video folgen wollte habe ich make genommen.

    Habe jetzt "cmake --build . --parallel" augeführt, aber leider bricht es gleich zu Anfang mit der Fehlermeldung:
    ~~
    compilation terminated.
    ninja: build stopped: subcommand failed.
    ~~

    ab.



  • Anscheinend ist "ninja" umbekannt. Ist der Pfad dazu in PATH eingetragen (set path)?

    Edit: s.a. Qt for Windows - Building from Source "Step 3: Set the Environment Variables".



  • Habe gerade geschaut mit "ninja --version" und mir wird 1.10.2 angezeigt.
    Außerdem ist "C:\Mingw\bin" in den PATH eingetragen und darin befindet sich auch ninja.exe

    Hier mal ein größerer Auszug der Meldung:

    compilation terminated.
    [6/7275] Building CXX object qtbase/src/3rdparty/harfbuzz-ng/CMakeFiles/BundledHarfbuzz.dir/hb-dummy.cc.obj
    FAILED: qtbase/src/3rdparty/harfbuzz-ng/CMakeFiles/BundledHarfbuzz.dir/hb-dummy.cc.obj
    C:\MinGW\bin\c++.exe -DHAVE_ATEXIT -DHAVE_CONFIG_H -DHAVE_OT -DHB_EXTERN="" -DHB_NDEBUG -DHB_NO_UNICODE_FUNCS -DHB_NO_WIN1256 -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_VERSION_TAGGING -D_USE_MATH_DEFINES -IC:/Qt/6.1.3/Src/qtbase/src/3rdparty/harfbuzz-ng/include/harfbuzz -IC:/Qt/6.1.3/Src/qtbase/src/corelib/Core_autogen/include -IC:/Qt/6.1.3/Src/qtbase/include -IC:/Qt/6.1.3/Src/qtbase/include/QtCore -IC:/Qt/6.1.3/Src/qtbase/src/corelib -IC:/Qt/6.1.3/Src/qtbase/src/corelib/global -IC:/Qt/6.1.3/Src/qtbase/src/corelib/kernel -IC:/Qt/6.1.3/Src/qtbase/src/corelib/../3rdparty/tinycbor/src -IC:/Qt/6.1.3/Src/qtbase/include/QtCore/6.1.3 -IC:/Qt/6.1.3/Src/qtbase/include/QtCore/6.1.3/QtCore -IC:/Qt/6.1.3/Src/qtbase/src/corelib/../3rdparty -IC:/Qt/6.1.3/Src/qtbase/src/corelib/../3rdparty/double-conversion/include -IC:/Qt/6.1.3/Src/qtbase/src/corelib/.rcc -IC:/Qt/6.1.3/Src/qtbase/mkspecs/win32-g++ -IC:/Strawberry/c/include -IC:/Qt/6.1.3/Src/qtbase/src/3rdparty/pcre2/src -IC:/Qt/6.1.3/Src/qtbase/src/3rdparty/harfbuzz-ng -DNDEBUG -O2 -fvisibility=hidden -fno-keep-inline-dllexport -w -fno-exceptions -std=c++1z -MD -MT qtbase/src/3rdparty/harfbuzz-ng/CMakeFiles/BundledHarfbuzz.dir/hb-dummy.cc.obj -MF qtbase\src\3rdparty\harfbuzz-ng\CMakeFiles\BundledHarfbuzz.dir\hb-dummy.cc.obj.d -o qtbase/src/3rdparty/harfbuzz-ng/CMakeFiles/BundledHarfbuzz.dir/hb-dummy.cc.obj -c C:/Qt/6.1.3/Src/qtbase/src/3rdparty/harfbuzz-ng/hb-dummy.cc
    In file included from C:/Qt/6.1.3/Src/qtbase/src/3rdparty/harfbuzz-ng/src/hb-common.cc:29:0,
                     from C:/Qt/6.1.3/Src/qtbase/src/3rdparty/harfbuzz-ng/hb-dummy.cc:7:
    C:/Qt/6.1.3/Src/qtbase/src/3rdparty/harfbuzz-ng/src/hb.hh:201:26: fatal error: winapifamily.h: No such file or directory
     #include <winapifamily.h>
                              ^
    compilation terminated.
    ninja: build stopped: subcommand failed.
    
    C:\Qt\6.1.3\Src>ninja --version
    1.10.2
    
    


  • OK, der Fehler ist doch eindeutig beim Bauen der HarfBuzz-NG lib.
    Benötigst du denn HarfBuzz? Ansonsten entferne es aus der Module-Liste von Qt: HarfBuzz-NG, version 2.9.0



  • Danke, habe es entfernt und damit startete es wenigstens.
    Nun habe ich allerdings erneut eine Fehlermeldung:

    Qt is now configured for building. Just run 'cmake --build . --parallel'
    
    Once everything is built, you must run 'cmake --install .'
    Qt will be installed into 'C:/Qt/6.1.3/Build'
    
    To configure and build other Qt modules, you can use the following convenience script:
            C:/Qt/6.1.3/Build/bin/qt-configure-module.bat
    
    If reconfiguration fails for some reason, try to remove 'CMakeCache.txt' from the build directory
    
    -- Configuring incomplete, errors occurred!
    See also "C:/Qt/6.1.3/Src/CMakeFiles/CMakeOutput.log".
    See also "C:/Qt/6.1.3/Src/CMakeFiles/CMakeError.log".
    FAILED: build.ninja
    C:\CMake\bin\cmake.exe --regenerate-during-build -SC:\Qt\6.1.3\Src -BC:\Qt\6.1.3\Src
    ninja: error: rebuilding 'build.ninja': subcommand failed
    

    So langsam werde ich wahnsinnig. Warum bekomme ich es nicht hin? Ist es denn wirklich so schweirig?
    Kann es sein, dass ich irgendwelches Vorwissen dafür benötige?



  • Anscheinend hast du schon zu oft bauen lassen - da scheinen noch einige Artefakte übrig zu sein.
    Lösche, wie angegeben, CMakeCache.txt (oder aber gleich das gesamte Build-Verzeichnis).

    Schau auch in die angegebenen Log-Dateien.



  • Habe jetzt das gesamte Src Verzeichniss (das meintest du doch, oder?) nochmals gelöscht und erneut alle Schritte ausgeführt.
    Allerdings bleibt es bei dem Ergebnis, bekomme wieder die gleiche Fehlermeldung.



  • @tomatriga sagte in Fehler beim Build erstellen QT6:

    -- Configuring incomplete, errors occurred!
    See also "C:/Qt/6.1.3/Src/CMakeFiles/CMakeOutput.log".
    See also "C:/Qt/6.1.3/Src/CMakeFiles/CMakeError.log".
    

    Naja, hast du da mal reingeschaut?



  • Ja sicherlich habe ich da schon hereingeschaut, allerdings steht da am Ende auch wieder der gleiche Fehler:

    C:/Qt/6.1.3/Src/CMakeFiles/CMakeTmp/src.cxx:3:29: fatal error: uaplatformlayer.h: No such file or directory
    
     #include <uaplatformlayer.h>
    
                                 ^
    
    compilation terminated.
    
    ninja: build stopped: subcommand failed.
    
    
    
    Source file was:
     #include <stdio.h>
    
    #include <uaplatformlayer.h>
    #include <uastring.h>
    #include <uasession.h>
    
    using namespace UaClientSdk;
    
    int main(int /*argc*/, char ** /*argv*/)
    {
    
        UaPlatformLayer::init();
        UaSession *session = new UaSession;
    
        UaPlatformLayer::cleanup();
        return 0;
    }
    

    Ich habe immer nur am Ende geschaut, da die Files über 9000 Zeilen haben. Oder wie analysiert ihr solche Files?



  • Und wieder ein 3rd-party Module: Qt OPC UA...

    Hast du alle Qt Module aktiviert? Du solltest ersteinmal nur die "Qt Essentials" compilieren lassen.



  • @tomatriga sagte in Fehler beim Build erstellen QT6:

    Ja sicherlich habe ich da schon hereingeschaut

    Na wunderbar. Können wir bloss nicht wissen wenn du es nicht dazuschreibst.

    allerdings steht da am Ende auch wieder der gleiche Fehler:

    C:/Qt/6.1.3/Src/CMakeFiles/CMakeTmp/src.cxx:3:29: fatal error: uaplatformlayer.h: No such file or directory
    
     #include <uaplatformlayer.h>
    
                                 ^
    
    compilation terminated.
    

    Das ist ein Fehler den du noch nie hier gepostet hast. Also zumindest für uns entschieden nicht "wieder der gleiche Fehler".


Anmelden zum Antworten