How to compile Qt 6 sources with openssl 3.0?
-
I'm trying to compile the Qt source
6.6.1
with OpenSSL 3.0, i have compiled the OpenSSL sourceopenssl-3.2.0
and set it folder to the PATH variableC:\Program Files\OpenSSL
it sucessfully enabled the 3.0 option in the config log:Support enabled for: Using pkg-config ....................... no Using vcpkg ............................ yes udev ................................... no OpenSSL ................................ yes Qt directly linked to OpenSSL ........ no OpenSSL 1.1 ............................ no OpenSSL 3.0 ............................ yes
However, now when compiling the source i'm getting a lot of redefinition errors on
winsock.h
andwinsock2.h
files:C:\Qt\w6.6.0>cmake --build . --parallel [2307/19563] Building CXX object qtbase\src\plugins\tls\op...ndOpenSSLPlugin.dir\RelWithDebInfo\qtlskey_openssl.cpp.obj FAILED: qtbase/src/plugins/tls/openssl/CMakeFiles/QTlsBackendOpenSSLPlugin.dir/RelWithDebInfo/qtlskey_openssl.cpp.obj C:\PROGRA~1\MICROS~1\2022\Preview\VC\Tools\MSVC\1439~1.334\bin\Hostx64\x64\cl.exe /nologo /TP -DNOMINMAX -DOPENSSL_API_COMPAT=0x10100000L -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_UP_TO=0x040800 -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_LEAN_HEADERS=1 -DQT_NETWORK_LIB -DQT_NO_AS_CONST -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QEXCHANGE -DQT_PLUGIN -DQT_WARN_DEPRECATED_UP_TO=0x070000 -DQTlsBackendOpenSSLPlugin_EXPORTS -DUNICODE -DWIN32 -DWIN64 -D_CRT_SECURE_NO_WARNINGS -D_ENABLE_EXTENDED_ALIGNED_STORAGE -D_UNICODE -D_WIN64 -DCMAKE_INTDIR=\"RelWithDebInfo\" -IC:\Qt\w6.6.0\qtbase\src\plugins\tls\openssl\QTlsBackendOpenSSLPlugin_autogen\include_RelWithDebInfo -IC:\Qt\w6.6.0\qtbase\src\plugins\tls\openssl -IC:\Qt\w6.6.0\qtbase\include -I"C:\Program Files\OpenSSL\include" -IC:\Qt\w6.6.0\qtbase\src\network -IC:\Qt\w6.6.0\qtbase\include\QtNetwork\6.6.1 -IC:\Qt\w6.6.0\qtbase\include\QtNetwork\6.6.1\QtNetwork -IC:\Qt\w6.6.0\qtbase\src\corelib -IC:\Qt\w6.6.0\qtbase\include\QtCore\6.6.1 -IC:\Qt\w6.6.0\qtbase\include\QtCore\6.6.1\QtCore -IC:\Qt\w6.6.0\qtbase\include\QtCore -IC:\Qt\w6.6.0\qtbase\mkspecs\win32-msvc -IC:\Qt\w6.6.0\qtbase\include\QtNetwork /DWIN32 /D_WINDOWS /Zi /DNDEBUG -O2 -Ob3 -std:c++17 -MD /W3 /EHs-c- /wd4530 /wd4577 -Zc:__cplusplus -permissive- -utf-8 -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:ternary -Zc:externConstexpr -Zc:wchar_t -bigobj -guard:cf -Gw /showIncludes /Foqtbase\src\plugins\tls\openssl\CMakeFiles\QTlsBackendOpenSSLPlugin.dir\RelWithDebInfo\qtlskey_openssl.cpp.obj /Fdqtbase\src\plugins\tls\openssl\CMakeFiles\QTlsBackendOpenSSLPlugin.dir\RelWithDebInfo\ /FS -c C:\Qt\w6.6.0\qtbase\src\plugins\tls\openssl\qtlskey_openssl.cpp C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\shared\ws2def.h(103): warning C4005: 'AF_IPX': macro redefinition C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\um\winsock.h(457): note: see previous definition of 'AF_IPX' C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\shared\ws2def.h(147): warning C4005: 'AF_MAX': macro redefinition C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\um\winsock.h(476): note: see previous definition of 'AF_MAX' C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\shared\ws2def.h(187): warning C4005: 'SO_DONTLINGER': macro redefinition C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\um\winsock.h(399): note: see previous definition of 'SO_DONTLINGER' C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\shared\ws2def.h(240): error C2011: 'sockaddr': 'struct' type redefinition C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\um\winsock.h(482): note: see declaration of 'sockaddr' ...
The full build log can be found here
I'm compiling using
Visual Studio 2022 Developer Command Prompt v17.9.0-pre.3.0
with the following command:configure.bat -debug-and-release -platform win32-msvc -opensource -confirm-license -force-debug-info -webengine-proprietary-codecs -feature-vulkan -no-schannel -openssl-runtime -prefix "C:\Qt\w6.6.0"
After some research, I found this answer that suggests a problem in the order of the includes.
I wonder if I'm missing something in the
configure.bat
command or if it's a problem in the Qt source code.