How to build Qt 6.2.2 from source on Windows 10 - c++

I've been trying to build Qt 6.2.2 from source. I downloaded the sources package from the online installer but it fails each time, each time with a different error. I've tried a variety of configurations such as:
configure.bat -static -release -platform win32-msvc -opensource -confirm-license -prefix "C:\Qt\6.2.2\Static" -make libs -make tools -nomake examples -nomake tests
configure.bat -static -release -platform win32-msvc -opensource -confirm-license -prefix "C:\Qt\6.2.2\Static" -make libs -make tools -nomake examples -nomake tests -no-icu -no-opengl -no-openssl -skip qtwayland -skip qtquick3d -skip qtquickcontrols2 -skip qtquicktimeline -skip qtshadertools -skip qtdeclarative -skip qtdoc -skip qttranslations -skip qt3d -skip qt5compat -skip qtcharts -skip qtcoap -skip qtdatavis3d -skip qtlottie -skip qtmqtt -skip qtopcua -skip qtscxml -skip qtvirtualkeyboard -skip qtmultimedia -skip qtwebengine -skip qtwebview
configure.bat -static -release -platform win32-msvc -opensource -confirm-license -prefix "C:\Qt\6.2.2\Static" -no-openssl -make libs -make tools -nomake examples -nomake tests
I've tried using x86_x64 Cross Tools Command Prompt for VS 2017, x86_x64 Cross Tools Command Prompt for VS 2019,
and x64 Native Tools Command Prompt for VS 2019
Here is one of the errors I've gotten using all config options then cmake --build .
[1424/8836] Building CXX object
qtbase\src\network\CMakeFiles\Network.dir\Network_autogen\mocs_compilation.cpp.obj
FAILED:
qtbase/src/network/CMakeFiles/Network.dir/Network_autogen/mocs_compilation.cpp.obj
C:\PROGRA~2\MICROS~1\2019\COMMUN~1\VC\Tools\MSVC\1424~1.283\bin\Hostx86\x64\cl.exe
/nologo /TP -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_NETWORK_LIB -
DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DEPRECATED_WARNINGS_SINCE=0x060000 -
DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DQT_MOC_COMPAT -DQT_NO_CAST_TO_ASCII -
DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_FOREACH -
DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_USING_NAMESPACE -
DQT_USE_QSTRINGBUILDER -DQT_USE_SYSTEM_PROXIES -DUNICODE -DWIN32 -DWIN64 -
D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -
D_USE_MATH_DEFINES -D_WIN64 -
IC:\Qt\6.2.2\Src\qtbase\src\network\Network_autogen\include -
IC:\Qt\6.2.2\Src\qtbase\include -IC:\Qt\6.2.2\Src\qtbase\include\QtNetwork -
IC:\Qt\6.2.2\Src\qtbase\src\network -IC:\Qt\6.2.2\Src\qtbase\src\network\kernel -
IC:\Qt\6.2.2\Src\qtbase\include\QtNetwork\6.2.2 -
IC:\Qt\6.2.2\Src\qtbase\include\QtNetwork\6.2.2\QtNetwork -
IC:\Qt\6.2.2\Src\qtbase\src\network\..\3rdparty\zlib\src -
IC:\Qt\6.2.2\Src\qtbase\include\QtCore -IC:\Qt\6.2.2\Src\qtbase\mkspecs\win32-msvc -
IC:\Qt\6.2.2\Src\qtbase\src\corelib -IC:\Qt\6.2.2\Src\qtbase\include\QtCore\6.2.2 -
IC:\Qt\6.2.2\Src\qtbase\include\QtCore\6.2.2\QtCore -IC:\Strawberry\c\include /DWIN32
/D_WINDOWS /DNDEBUG -O2 -MD /W3 /wd4530 /wd4577 -Zc:__cplusplus -permissive- -utf-8 -
FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding
-Zc:externConstexpr -Zc:wchar_t -guard:cf -std:c++17
/YuC:/Qt/6.2.2/Src/qtbase/src/network/CMakeFiles/Network.dir/cmake_pch.hxx
/FpC:/Qt/6.2.2/Src/qtbase/src/network/CMakeFiles/Network.dir/./cmake_pch.cxx.pch
/FIC:/Qt/6.2.2/Src/qtbase/src/network/CMakeFiles/Network.dir/cmake_pch.hxx
/showIncludes
/Foqtbase\src\network\CMakeFiles\Network.dir\Network_autogen\mocs_compilation.cpp.obj
/Fdqtbase\lib\Qt6Network.pdb /FS -c
C:\Qt\6.2.2\Src\qtbase\src\network\Network_autogen\mocs_compilation.cpp
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\memory(1764): error C2027:
use of undefined type 'QSslCipherPrivate'
C:\Qt\6.2.2\Src\qtbase\include\QtNetwork\../../src/network/ssl/qsslcipher.h(56):
note: see declaration of 'QSslCipherPrivate'
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\memory(1763): note: while
compiling class template member function 'void
std::default_delete<QSslCipherPrivate>::operator ()(_Ty *) noexcept const'
with
[
_Ty=QSslCipherPrivate
]
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\memory(1873): note: see
reference to function template instantiation 'void
std::default_delete<QSslCipherPrivate>::operator ()(_Ty *) noexcept const' being
compiled
with
[
_Ty=QSslCipherPrivate
]
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\memory(1802): note: see
reference to class template instantiation 'std::default_delete<QSslCipherPrivate>'
being compiled
C:\Qt\6.2.2\Src\qtbase\include\QtNetwork\../../src/network/ssl/qsslcipher.h(87):
note: see reference to class template instantiation
'std::unique_ptr<QSslCipherPrivate,std::default_delete<QSslCipherPrivate>>' being
compiled
C:\Qt\6.2.2\Src\qtbase\include\QtCore\../../src/corelib/kernel/qmetatype.h(2168):
note: see reference to class template instantiation 'std::array<char,38>' being
compiled
C:\Qt\6.2.2\Src\qtbase\src\network\access\qnetworkaccesscache_p.h(127): note: see
reference to function template instantiation 'std::array<char,38>
QtPrivate::typenameHelper<QNetworkAccessCache::CacheableObject*>(void)' being
compiled
C:\Qt\6.2.2\Src\qtbase\include\QtCore\../../src/corelib/kernel/qmetatype.h(2168):
note: see reference to class template instantiation 'std::array<char,28>' being
compiled
C:\Qt\6.2.2\Src\qtbase\include\QtNetwork\../../src/network/access/
qnetworkreply.h(197):
note: see reference to function template instantiation 'std::array<char,28>
QtPrivate::typenameHelper<QNetworkReply::NetworkError>(void)' being compiled
C:\Qt\6.2.2\Src\qtbase\include\QtCore\../../src/corelib/kernel/qmetatype.h(2168):
note:
see reference to class template instantiation 'std::array<char,31>' being compiled
C:\Qt\6.2.2\Src\qtbase\include\QtNetwork\../../src/network/ssl/
qsslpresharedkeyauthentica
tor.h(94): note: see reference to function template instantiation
'std::array<char,31>
QtPrivate::typenameHelper<QSslPreSharedKeyAuthenticator*>(void)' being compiled
C:\Qt\6.2.2\Src\qtbase\include\QtCore\../../src/corelib/kernel/qmetatype.h(2376):
note:
see reference to class template instantiation 'std::array<char,30>' being compiled
C:\Qt\6.2.2\Src\qtbase\include\QtCore\../../src/corelib/kernel/qmetatype.h(1587):
note:
see reference to class template instantiation 'std::array<char,9>' being compiled
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\memory(1764): error C2338:
can't
delete an incomplete type
C:\Program Files (x86)\Microsoft Visual
Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\memory(1765): warning C4150:
deletion of pointer to incomplete type 'QSslCipherPrivate'; no destructor called
C:\Qt\6.2.2\Src\qtbase\include\QtNetwork\../../src/network/ssl/qsslcipher.h(56):
note:
see declaration of 'QSslCipherPrivate'
[1426/8836] Building CXX object
qtbase\src\tools\qvkgen\CMakeFiles\qvkgen.dir\qvkgen.cpp.obj
ninja: build stopped: subcommand failed.
I've also downloaded the 5.15.x source from here which I'm able to build without issues using the first configure command I posted.
I currently have Strawberry Perl 5.32.x, python 3.10, 3.9.x, and Cmake 3.22.1 installed they're all in my path as well. Per this I meet the requirements. I confirmed the path is correct using where <insert_name.exe> which returns:
where perl.exe
C:\Strawberry\perl\bin\perl.exe
where python.exe
C:\Users\MyNAme\AppData\Local\Programs\Python\Python39\python.exe
C:\Users\MyName\AppData\Local\Programs\Python\Python310\python.exe
where cmake.exe
C:\Program Files\CMake\bin\cmake.exe
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
As I was writing this I kept digging and found a ton of bug reports about this same issue. It seems to all come back to OpenSSL. I grabbed the OpenSSL source, I installed NASM and added it to my path. I configured and built OpenSSL with:
perl Configure VC-WIN64A
nmake all
Once OpenSSL finished reconfigured Qt with it:
configure.bat -prefix "C:\Libraries\QT-Static" -release -platform win32-msvc -opensource -confirm-license -make libs -make tools -nomake examples -nomake tests -I "C:\Program Files\OpenSSL\include\openssl" -L "C:\Program Files\OpenSSL\lib"
This time it shows the following:
Qt Network:
getifaddrs() ........................... no
IPv6 ifname ............................ no
libproxy ............................... no
Schannel ............................... yes
OpenSSL ................................ yes
Qt directly linked to OpenSSL ........ no
OpenSSL 1.1 ............................ yes
DTLS ................................... yes
OCSP-stapling .......................... yes
SCTP ................................... no
Use system proxies ..................... yes
GSSAPI ................................. no
Brotli Decompression Support ........... no
Then ran:
cmake --build . --parallel
It still fails but this time with a lot more errors, once again linking back to the OpenSSL issue. I thought maybe it had to do with the CMAKE_CXX_STANDARD flag so I forced 17 instead of allowing MSVC to force latest but no luck. Has anyone managed to get 6.2.2 to build on windows 10, if so how?

Upgrade your compiler to the latest VS2019 version (16.11) - see also https://bugreports.qt.io/browse/QTBUG-97999

Related

QT migration 5.9 to 5.10 cameraviewfinder broken

Environment A: cross-compiling on Ubuntu to Raspberry pi3 in source dir
~/src/rpi2point/qt-everywhere-opensource-src-5.9.0-rc2$ ~/src/rpi2point/qt-everywhere-opensource-src-5.9.0-rc2/configure -release -opengl es2 -device linux-rasp-pi3-vc4-g++ -device-option CROSS_COMPILE=~/src/rpi2point/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/src/rpi2point/sysroot -opensource -confirm-license -make libs -no-use-gold-linker -no-pch -prefix /usr/local/qt5pi -extprefix ~/src/rpi2point/qt5pi -hostprefix ~/src/rpi2point/qt5 -v
QML Video Shader Effect and QML Video Example working
Camera Example throws:
/home/matin/src/rpi2point/sysroot/usr/lib/arm-linux-gnueabihf/libQt5OpenGL.so.5:-1: error: undefined reference to `operator delete(void*, unsigned int)#CXXABI_1.3.9'
/home/matin/src/rpi2point/sysroot/usr/lib/arm-linux-gnueabihf/libQt5OpenGL.so.5:-1: error: undefined reference to `qTriangulate(QVectorPath const&, QTransform const&, double)#Qt_5_PRIVATE_API'
Environment B: cross-compiling on Ubuntu to Raspberry pi3 in source dir
mkdir qt5.10
git clone https://github.com/qt/qt5.git
./init-repository
./configure -release -opengl es2 -device linux-rasp-pi3-vc4-g++ -device-option CROSS_COMPILE=~/src/rpi2point/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf- -sysroot ~/src/rpi2point/sysroot -opensource -confirm-license -make libs -no-use-gold-linker -no-pch -prefix /usr/local/qt5pi -extprefix ~/src/rpi2point/qt5pi -hostprefix ~/src/rpi2point/qt5 -v
Reconfigure QtCreator with additional device and building for qt 5.10 - the examples compile and run -- but no picture from the camera
any sugestions?
THX Martin

Error U1077 return code

I get an error when I try to compile QT. I compile it with the source in static with openssl. I use this tutorial to make the "build" script
C:\Qt\5.8_Static\src\qt-everywhere-opensource-src-5.8.0\qtbase>configure.bat -static -debug-and-release -platform win32-g++ -prefix C:\Qt\5.8_Static\5.8.0 -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -openssl-linked -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests
Please wait while bootstrapping configure ...
<srcbase> = C:/Qt/5.8_Static/src/qt-everywhere-opensource-src-5.8.0/qtbase
<outbase> = C:/Qt/5.8_Static/src/qt-everywhere-opensource-src-5.8.0/qtbase
Microsoft (R) Program Maintenance Utility Version 14.00.24210.0
Copyright (C) Microsoft Corporation. Tous droits réservés.
cl -c -Yc -nologo -Zc:wchar_t -W3 -GR -EHsc -w34100 -w34189 -wd4577 -D
UNICODE -D_CRT_SECURE_NO_DEPRECATE -DQT_BOOTSTRAPPED -DQT_BUILD_CONFIGURE -DQT_U
SE_QSTRINGBUILDER -DQT_VERSION_STR=\"5.8.0\" -DQT_VERSION_MAJOR=5 -DQT_VERSION_M
INOR=8 -DQT_VERSION_PATCH=0 -I"..\..\include" -I"..\..\include\QtCore" -I"..\..\
include\QtCore\5.8.0" -I"..\..\include\QtCore\5.8.0\QtCore" -I"C:\Qt\5.8_Static\
src\qt-everywhere-opensource-src-5.8.0\qtbase\tools\shared" -I"C:\Qt\5.8_Static\
src\qt-everywhere-opensource-src-5.8.0\qtbase\mkspecs\win32-msvc2012" -Fpconfigu
re_pch.pch -Foconfigure_pch.obj -TP C:\Qt\5.8_Static\src\qt-everywhere-opensourc
e-src-5.8.0\qtbase\tools\configure\configure_pch.h
configure_pch.h
c:\qt\5.8_static\src\qt-everywhere-opensource-src-5.8.0\qtbase\include\qtcore\..
/../src/corelib/global/qglobal.h(45): fatal error C1083: Impossible d'ouvrir le
fichier include : 'type_traits' : No such file or directory
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0
\VC\bin\cl.EXE"' : code retour '0x2'
Stop.

Compiling QT 5.3.2 under windows 7 and msvc

I'm using msvc 2013 (ultimate-64bit), windows 7 64bit.
I compiled icu4c 54.1 by msvc 2013 (64 bit).
And now i try to compile qt 5.3.2-everywhere-opensource-src ( i added patch there (i replaced QWebFrame.cpp))
I used CMD developer tool from visual studio.
--- And i executed these commands:
cd D:\qt
d:
configure -prefix D:\Qt\Qt_making -platform win32-msvc2013 -opensource -c++11 -make tools -make libs -qt-sql-sqlite -no-openssl -icu -I C:\icu-53.1-vs2013\include -L C:\icu-53.1-vs2013\lib64 // all OK - after all, include loaded/ new icu libs loaded
nmake
After 4 command the process interrupted. And displayed error:
with: 36 unresolved externals these 'unresolved externals' is propably about libs.
I make screen of these errors (below):
So whats wrong?
I have to compile QT (in particular QWebKit - becouse of the patch all on 64 bit.)
The last time I compiled Qt for Windows (in order to get the desktop version of OpenGL), here's what I needed to do. Note that this was with VS2010 and Qt 5.0.0 (on Windows 7).
set CL=/MP
if not compiling qtwebkit:
Need to rename/delete the qtwebkit* directories (there's a -no-webkit option but it doesn't work in 5.0.0)
else:
Need ICU, GNU bison, and GNU gperf (either install the prebuilt binaries or build yourself)
if using ICU (required for qtwebkit):
set LIB=%LIB%;C:\icu\lib
set INCLUDE=%INCLUDE%;C:\icu\include
set PATH=C:\icu\bin;%PATH%
set PATH=%PATH%;C:\Program Files (x86)\gperf\bin;C:\bison\bin
cd <path>\qt-everywhere-opensource-src-<version>
configure -prefix C:\Qt\Qt5.0.0-opengl-desktop -opensource -debug-and-release -platform win32-msvc2010 -opengl desktop -no-cetest -nomake tests -nomake examples -confirm-license -ltcg -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -mp
nmake
nmake install
if used ICU:
copy all the DLLs from C:\icu\bin to C:\Qt\Qt5.0.0-opengl-desktop\bin

Error building Qt 5.3.0

I am trying to compile Qt 5.3.0 to get rid of icu dlls. I have Windows 7 32 bit, MS VS2012. I ran the following command:
configure -nomake examples -nomake tests -opengl desktop -prefix C:\\Qt5.3.0_custom -platform win32-msvc2012 -opensource -c++11 -no-icu
After a large output I got this error:
C:\Qt5.3.0_custom\qtbase\qmake\generators\win32\msvc_nmake.cpp(50) : fatal error
C1083: Cannot open include file: 'windows/registry_p.h': No such file or direct
ory
msvc_vcxproj.cpp
msvc_objectmodel.cpp
C:\Qt5.3.0_custom\qtbase\qmake\generators\win32\msvc_vcproj.cpp(71) : fatal erro
r C1083: Cannot open include file: 'windows/registry_p.h': No such file or direc
tory
msbuild_objectmodel.cpp
cesdkhandler.cpp
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 11.0\VC\BI
N\cl.EXE"' : return code '0x2'
Stop.
Building qmake failed, return code 2
I forgot to execute a batch file, so here is the complete process:
C:\Program Files\Microsoft Visual Studio 11.0\VC\vcvarsall.bat
configure -nomake examples -nomake tests -opengl desktop -prefix C:\\Qt5.3.0_custom -platform win32-msvc2012 -opensource -c++11 -no-icu
nmake

Compile Qt5 without GUI support on Linux ARM

I'm having troubles getting Qt5 working without GUI elements on my Cortex-A9 board due the OpenGL dependencies (i.e. OpenGL ES2). I am running a Ubuntu 14.04 rootfs.
Is there any way to disable the generation of GUI classes, starting from git repository? (Target version 5.3).
The only modules I need are QtCore, QtXML and QtWebSockets/QtNetwork
The following seems to get Qt5 to compile with a LinuxFB driver and no OpenGL.
./configure -qpa linuxfb -no-largefile -opensource -verbose -release \
-no-accessibility -confirm-license -no-sse -no-sse2 \
-qt-zlib -qt-libpng -nomake examples -nomake demos -nomake docs -nomake tests \
-make libs --prefix=/usr -no-pch -no-iconv -no-nis -no-xkb -no-xshape \
-no-xvideo -no-xsync -no-xinerama -no-xcursor -no-xfixes -no-xrandr -no-kms \
-no-directfb -no-eglfs -no-xcb -no-dbus -no-icu -no-cups -no-gif \
-no-accessibility -no-opengl -nomake quick -make quick1 \
-skip multimedia -skip webkit -nomake webkit -no-pkg-config \
-no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci \
-no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \
-no-sql-sqlite_symbian -no-sql-tds -nomake tools \
-device linux-custom-g++ -device-option CROSS_COMPILE=$TGT_TOOL_NAME-
The keys are, -no-opengl and -nomake quick. QtQuick2 will pull in OpenGL.
Also it seems I must do the following,
touch module_qtwebkit-make_first
This stops the build system from trying to make QtWebKit; it seems buggy. This still has the GUI classes, but don't link to them. That is before the plain make. For the install target,
touch module_qtwebkit-install_subtargets
was required. Later Qt5 releases may have fixed the QtWebkit build issues.
It seems that at least Qt 5.6.2 supports -no-gui and -no-widgets configuration options.
Ubuntu team itself declared that Qt5.3. is still under investigation for armhf platforms and that probably it will be available from 14.10 release.
Somehow, crawling on Qt forums, there are missing dependencies and compiling errors when there's no OpenGL/GUI module.
I resolved it installing 1t 5.2.1 from repositories and then the missing QWebSocket module from git repository.
In order to make this module compatible with older Qt version, the file .qmake.conf:
MODULE_VERSION = 5.3.2 --> to desired one (i.e. 5.2.1)