Error on Qt 6 Building from source for Windows Based
-
Do you want to compile with MinGW or MSVC?
If MinGW - why do you call MSVC batch files which set MSVC specific env vars?
If MSVC - why do you call g++? -
Still does not explain why you set MSVC env vars when trying to build with MinGW.
-
Tyying this batch inspired from this post. I thank Chris Kawa.
I thought it was to build with MSVC 2019.
SET VS_ENVIRONMENT="c:\Program Files (x86)\Microsoft Visual Studio\2019\VC\Auxiliary\Build\vcvars64.bat" SET SRC_DIR="d:\Logiciels\Qt\6.2.2\Src" SET BUILD_DIR="d:\Logiciels\Qt\6.2.2\Build" SET INSTALL_DIR="d:\Logiciels\Qt\6.2.2\vs2019-x64" SET CONFIGURE_OPTIONS=-debug-and-release -mp -opensource -confirm-license call %VS_ENVIRONMENT% mkdir %BUILD_DIR% mkdir %INSTALL_DIR% cd %BUILD_DIR% call %SRC_DIR%\configure -prefix %INSTALL_DIR% %CONFIGURE_OPTIONS% cmake --build . --parallel cmake --install . cmake --install . --config Release cd %INSTALL_DIR% :: rmdir %BUILD_DIR% /Q /S pause
I got these error, have to set WINVER and _WIN32_WINNT defines but how doing it ?
Performing C++ SOURCE FILE Test HAVE_WIN10_WIN32_WINNT failed with the following output: Change Dir: D:/Logiciels/Qt/6.2.2/Build/CMakeFiles/CMakeTmp Run Build Command(s):C:/ninja-win/ninja.exe -f build-Release.ninja cmTC_9e6d0 && [1/2] Building CXX object CMakeFiles/cmTC_9e6d0.dir/Release/src.cxx.obj FAILED: CMakeFiles/cmTC_9e6d0.dir/Release/src.cxx.obj C:\Strawberry\c\bin\c++.exe -DHAVE_WIN10_WIN32_WINNT -DCMAKE_INTDIR=\"Release\" -O3 -DNDEBUG -std=gnu++17 -o CMakeFiles/cmTC_9e6d0.dir/Release/src.cxx.obj -c D:/Logiciels/Qt/6.2.2/Build/CMakeFiles/CMakeTmp/src.cxx D:/Logiciels/Qt/6.2.2/Build/CMakeFiles/CMakeTmp/src.cxx:6:10: error: #error "_WIN32_WINNT version **too low**" #error "_WIN32_WINNT version too low" ^~~~~ D:/Logiciels/Qt/6.2.2/Build/CMakeFiles/CMakeTmp/src.cxx:9:10: error: #error "WINVER version too low" #error "WINVER version too low" ^~~~~ ninja: build stopped: subcommand failed.
microsoft modifying-winver-and-win32-winnt
#define WINVER 0x0A00
#define _WIN32_WINNT 0x0A00Do I have to modify CMakeLists.txt or is it possibe to pass these defines from batch ?
Thank you -
So I understood but don't know where can i add those defines'param for a build MSVC, in the bat or in cmakelists.txt or ninja config ?
Thank you.
-
@NiVa99 said:
So I understood but don't know where can i add those defines'param for a build MSVC, in the bat or in cmakelists.txt or ninja config ?
Sorry, but I'm completely confused now which build you're talking about. You're constantly mixing msvc, mingw and now ninja and I can't understand which errors you're getting from which build.
Could you maybe focus on one and state clearly which is it?
And don't modify any Qt files. -
Building according to this note Building Qt 6 from sources
Requirements are CMake, Ninja, Perl, Python.Build Qt from Sources I search for is doing it with MSVC 2019, VS2022 (and later Ming).
-
@NiVa99 said in Error on Qt 6 Building from source for Windows Based:
C:\Strawberry\c\bin\c++.exe
Remove C:\Strawberry\c\bin from your PATH environment variable, and try a clean build again.
Background: CMake prefers clang/gcc over MSVC, even on Windows. So if you have anything called clang.exe, c++.exe ... in your PATH cmake will try to use that for compilation. Anyhow, the binaries in C:\Strawberry\c\bin are only for internal use of Strawberry - at least they're not enough to compile Qt.
If you want to use MSVC, call vcvars64.bat like @Christian-Ehrlicher suggested. If you want to use MinGW, prefer one of the MinGW toolchains that are supported by Qt: https://wiki.qt.io/MinGW
-
Thank you !
Following your advise, I comment llvm, clang, perl, g++ so thery are out of PATH env var ( and after some where verifications), then launch configure.bat as described by official doc step-4-build-the-qt-library from src path like that :
********************************************************************** ** Visual Studio 2019 Developer Command Prompt v16.11.6 ** Copyright (c) 2021 Microsoft Corporation ********************************************************************** [vcvarsall.bat] Environment initialized for: 'x64' C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional>d: D:\>cd Logiciels\Qt\6.2.2\qt-everywhere-src-6.2.2 D:\Logiciels\Qt\6.2.2\qt-everywhere-src-6.2.2>where where C:\Windows\System32\where.exe D:\Logiciels\Qt\6.2.2\qt-everywhere-src-6.2.2>where clang Information : impossible de trouver des fichiers pour le(s) modèle(s) spécifié(s). D:\Logiciels\Qt\6.2.2\qt-everywhere-src-6.2.2>where perl Information : impossible de trouver des fichiers pour le(s) modèle(s) spécifié(s). D:\Logiciels\Qt\6.2.2\qt-everywhere-src-6.2.2>where ninja C:\ninja-win\ninja.exe C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe D:\Logiciels\Qt\6.2.2\qt-everywhere-src-6.2.2>where g++ Information : impossible de trouver des fichiers pour le(s) modèle(s) spécifié(s). D:\Logiciels\Qt\6.2.2\qt-everywhere-src-6.2.2>where gcc Information : impossible de trouver des fichiers pour le(s) modèle(s) spécifié(s). D:\Logiciels\Qt\6.2.2\qt-everywhere-src-6.2.2>where cmake C:\CMake\bin\cmake.exe C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe D:\Logiciels\Qt\6.2.2\qt-everywhere-src-6.2.2>configure.bat + cd qtbase + D:\Logiciels\Qt\6.2.2\qt-everywhere-src-6.2.2\qtbase\configure.bat -top-level
This is the CMakeError.log
Checking whether the ASM compiler is GNU using "--version" did not match "(GNU assembler)|(GCC)|(Free Software Foundation)": Compilateur d'optimisation Microsoft (R) C/C++ version 19.29.30137 pour x64 Copyright (C) Microsoft Corporation. Tous droits réservés. cl : Ligne de commande warning D9002 : option '--version' inconnue ignorée cl : Ligne de commande error D8003 : nom de fichier de la source absent Checking whether the ASM compiler is Clang using "--version" did not match "(clang version)": Compilateur d'optimisation Microsoft (R) C/C++ version 19.29.30137 pour x64 Copyright (C) Microsoft Corporation. Tous droits réservés. cl : Ligne de commande warning D9002 : option '--version' inconnue ignorée cl : Ligne de commande error D8003 : nom de fichier de la source absent Checking whether the ASM compiler is AppleClang using "--version" did not match "(Apple LLVM version)": Compilateur d'optimisation Microsoft (R) C/C++ version 19.29.30137 pour x64 Copyright (C) Microsoft Corporation. Tous droits réservés. cl : Ligne de commande warning D9002 : option '--version' inconnue ignorée cl : Ligne de commande error D8003 : nom de fichier de la source absent Checking whether the ASM compiler is ARMClang using "--version" did not match "armclang": Compilateur d'optimisation Microsoft (R) C/C++ version 19.29.30137 pour x64 Copyright (C) Microsoft Corporation. Tous droits réservés. cl : Ligne de commande warning D9002 : option '--version' inconnue ignorée cl : Ligne de commande error D8003 : nom de fichier de la source absent Checking whether the ASM compiler is HP using "-V" did not match "HP C": Compilateur d'optimisation Microsoft (R) C/C++ version 19.29.30137 pour x64 Copyright (C) Microsoft Corporation. Tous droits réservés. cl : Ligne de commande error D8004 : '/V' nécessite un argument Checking whether the ASM compiler is Intel using "--version" did not match "(ICC)": Compilateur d'optimisation Microsoft (R) C/C++ version 19.29.30137 pour x64 Copyright (C) Microsoft Corporation. Tous droits réservés. cl : Ligne de commande warning D9002 : option '--version' inconnue ignorée cl : Ligne de commande error D8003 : nom de fichier de la source absent Checking whether the ASM compiler is IntelLLVM using "--version" did not match "(Intel[^ ]+oneAPI)": Compilateur d'optimisation Microsoft (R) C/C++ version 19.29.30137 pour x64 Copyright (C) Microsoft Corporation. Tous droits réservés. cl : Ligne de commande warning D9002 : option '--version' inconnue ignorée cl : Ligne de commande error D8003 : nom de fichier de la source absent Checking whether the ASM compiler is SunPro using "-V" did not match "Sun C": Compilateur d'optimisation Microsoft (R) C/C++ version 19.29.30137 pour x64 Copyright (C) Microsoft Corporation. Tous droits réservés. cl : Ligne de commande error D8004 : '/V' nécessite un argument Checking whether the ASM compiler is XL using "-qversion" did not match "XL C": Compilateur d'optimisation Microsoft (R) C/C++ version 19.29.30137 pour x64 Copyright (C) Microsoft Corporation. Tous droits réservés. cl : Ligne de commande warning D9002 : option '-qversion' inconnue ignorée cl : Ligne de commande error D8003 : nom de fichier de la source absent
Amazing.