Issue building qt 5.12 from latest git repo
-
So I just cloned qt today. I then updated/initialised the repo, configured it and then hit make (mingw32-make) and I got an error:
g++ -c -fno-keep-inline-dllexport -msse2 -mstackrealign -mfpmath=sse -g -Og -std=c++1z -ffunction-sections -fdata-sections -fexceptions -mthreads -Wall -W -Wextra -Wvla -Wdate-time -Wshift-overflow=2 -Wduplicated-cond -Wno-stringop-overflow -DUNICODE -D_UNICODE -DWIN32 -DMINGW_HAS_SECURE_API=1 -DWINVER=0x0601 -D_WIN32_WINNT=0x0601 -DQT_NO_USING_NAMESPACE -DQT_NO_FOREACH -DQFLOAT16_INCLUDE_FAST -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_BUILD_CORE_LIB -DQT_BUILDING_QT -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_DEPRECATED_WARNINGS -DQT_DISABLE_DEPRECATED_BEFORE=0x040800 -DPCRE2_CODE_UNIT_WIDTH=16 -DPCRE2_STATIC -I. -I../3rdparty/zlib/src -Iglobal -I../3rdparty/harfbuzz/src -I../3rdparty/md5 -I../3rdparty/md4 -I../3rdparty/sha3 -I../3rdparty -I../3rdparty/double-conversion/include -I../3rdparty/double-conversion/include/double-conversion -I../3rdparty/tinycbor/src -I../../include -I../../include/QtCore -I../../include/QtCore/5.12.2 -I../../include/QtCore/5.12.2/QtCore -Itmp -I.moc/debug -I.tracegen/debug -I../3rdparty/pcre2/src -I../../mkspecs/win32-g++ -o .obj/debug/qmap.o tools/qmap.cpp In file included from tools/qcollator.cpp:41:0: tools/qcollator_p.h:57:10: fatal error: QVector: No such file or directory #include <QVector>
I read a few posts, but I could not decipher what the solution is (unless its a bug in Qt). I am not using msys or anything like this - just bog-standard dos prompt (with conemu front end).
Here are the exact steps I took (because I was writing them down as I went):
1-Preparation
-
Get the qt source:
- git clone https://github.com/qt/qt5.git qt5_git_repo
- git submodule update --init --recursive
-
Download and install mingw64 (32 bit) from: https://sourceforge.net/projects/mingw-w64/. I used options:
- version 7.3.0
- Arch i686
- Threads posix
- Exception dwarf
- Build-rev 0
NOTE: in the mingw folder there should be a mingw-xx.bat file to open an cmd prompt environment for gcc. Run this for all cmd prompts to do the following actions.
2-Configuation
-
Open cmd prompt and cd into the qt git clone repo (using the mingw.bat to open the prompt).
-
configure -debug -opensource -static -static-runtime -skip webengine -no-pch -nomake examples -nomake tests -nomake tools -accessibility -no-sql-sqlite -no-opengl -opengl desktop -platform win32-g++ -qt-zlib -qt-libpng -qt-libjpeg -confirm-license -prefix "C:\install\Qt\5.12.1-static"
3-Compilation
-
mingw32-make -j8
(THIS STEP FAILED) -
mingw32-make install
(NEVER GOT TO THIS STEP)
Here is my path (printed on different lines for convienice):
D:\install\conemu\ConEmu\Scripts D:\install\conemu D:\install\conemu\ConEmu d:\install\mingw-w64\i686-7.3.0-posix-dwarf\mingw32\bin D:\install\msys64\usr\bin C:\ProgramData\Oracle\Java\javapath C:\Program Files (x86)\Intel\iCLS Client\ C:\Program Files\Intel\iCLS Client\ C:\Windows\system32 C:\Windows C:\Windows\System32\Wbem C:\Windows\System32\WindowsPowerShell\v1.0\ C:\Program Files\Intel\Intel(R) Management Engine Components\DAL C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL C:\Program Files\Intel\Intel(R) Management Engine Components\IPT C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT C:\Program Files\Calibre2\ C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common d:\install\Git\cmd d:\install\Git\usr\bin D:\install\p4merge D:\install\p4merge\DVCS\ C:\Program Files (x86)\Skype\Phone\ C:\Program Files\Git LFS C:\Program Files (x86)\Nmap D:\mybin
I am using windows 8.1.
update
My configuration summary:
This is the Qt Open Source Edition. You have already accepted the terms of the Open Source license. Running configuration tests... Checking for valid makespec... yes Checking for target architecture... i386 Checking for SSE2 instructions... yes Checking for AES new instructions... yes Checking for alloca() in alloca.h... no Checking for alloca() in malloc.h... yes Checking for SSE3 instructions... yes Checking for SSSE3 instructions... yes Checking for SSE4.1 instructions... yes Checking for SSE4.2 instructions... yes Checking for AVX instructions... yes Checking for AVX2 instructions... yes Checking for AVX512 F instructions... yes Checking for AVX512 BW instructions... yes Checking for AVX512 CD instructions... yes Checking for AVX512 DQ instructions... yes Checking for AVX512 ER instructions... yes Checking for AVX512 IFMA instructions... yes Checking for AVX512 PF instructions... yes Checking for AVX512 VBMI instructions... yes Checking for AVX512 VL instructions... yes Checking for C++14 support... yes Checking for C++1z support... yes Checking for C99 support... yes Checking for C11 support... yes Checking for D-Bus >= 1.2... no Checking for F16C instructions... yes Checking for support for split sections and linker garbage collection... yes Checking for D-Bus >= 1.2 (host)... yes Checking for IncrediBuild... no Checking for udev... no Checking for -Og support... yes Checking for POSIX fallocate()... no Checking for precompiled header support... yes Checking for RDRAND instruction... yes Checking for SHA new instructions... yes Checking for STL compatibility... yes Checking for Intrinsics without -mXXX argument... yes Checking for C++11 <future>... yes Checking for eventfd... no Checking for inotify... no Checking for slog2... no Checking for 64 bit atomics... yes Checking for DoubleConversion... no Checking for PCRE2... no Checking for O_CLOEXEC... no Checking for C++11 <random>... yes Checking for working std::atomic for function pointers... yes Checking for OpenSSL Headers... no Checking for getifaddrs()... no Checking for IPv6 ifname... no Checking for xkbcommon >= 0.5.0... no Checking for DirectX GI... yes Checking for Direct3D 11... yes Checking for Direct2D 1... yes Checking for Direct2D 1.1... yes Checking for DirectX GI 1.2... yes Checking for Direct3D 11.1... yes Checking for Direct3D 9... yes Checking for DirectWrite... yes Checking for DirectWrite 1... yes Checking for DirectWrite 2... yes Checking for KMS... no Checking for DirectX GUID... yes Checking for Desktop OpenGL... yes Checking for EGL... no Checking for evdev... no Checking for GBM... no Checking for LinuxFB... no Checking for mtdev... no Checking for OpenVG... no Checking for default QPA platform... windows Checking for tslib... no Checking for Vulkan... no Checking for XLib... no Checking for uxtheme.h... yes Checking for CUPS... no Checking for DB2 (IBM)... no Checking for InterBase... no Checking for MySQL... no Checking for OCI (Oracle)... no Checking for ODBC... yes Checking for PostgreSQL... no Checking for SQLite (version 2)... no Checking for TDS (Sybase)... no Checking for Direct3D 12... no Checking for SDL2... no Checking for Assimp... no Checking for Autodesk FBX... no Checking for Wayland EGL library... no Checking for BlueZ... no Checking for WinRT Bluetooth API... no Checking for sensorfw... no Checking for Gypsy... no Checking for WinRT Geolocation API... no Checking for DirectShow... yes Checking for evr.h... yes Checking for GStreamer 1.0... no Checking for GStreamer 0.10... no Checking for OpenAL... no Checking for libresourceqt5... no Checking for Windows Audio Services... no Checking for WMF... no Checking for wmsdk.h... no Checking for WShellItem... yes Checking for libclang... no Done running configuration tests. Configure summary: Build type: win32-g++ (i386, CPU features: <none>) Compiler: gcc 7.3.0 Configuration: sse2 aesni sse3 ssse3 sse4_1 sse4_2 avx avx2 avx512f avx512bw avx512cd avx512dq avx512er avx512ifma avx512pf avx512vbmi avx512vl compile_examples f16c largefile optimize_debug precompile_header rdrnd shani x86SimdAlways debug c++11 c++14 c++1z concurrent dbus no-pkg-config release_tools static static_runtime stl Build options: Mode ................................... debug; optimized tools Optimize debug build ................... yes Building shared libraries .............. no Using C standard ....................... C11 Using C++ standard ..................... C++1z Using gold linker ...................... no Generating GDB index ................... no Using precompiled headers .............. yes Using LTCG ............................. no Target compiler supports: SSE .................................. SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 AVX .................................. AVX AVX2 AVX512 ............................... F ER CD PF DQ BW VL IFMA VBMI Other x86 ............................ AES F16C RDRAND SHA Intrinsics without -mXXX option ...... yes Build parts ............................ libs App store compliance ................... no Qt modules and options: Qt Concurrent .......................... yes Qt D-Bus ............................... yes Qt D-Bus directly linked to libdbus .... no Qt Gui ................................. yes Qt Network ............................. yes Qt Sql ................................. yes Qt Testlib ............................. yes Qt Widgets ............................. yes Qt Xml ................................. yes Support enabled for: Using pkg-config ....................... no udev ................................... no Using system zlib ...................... no Qt Core: DoubleConversion ....................... yes Using system DoubleConversion ........ no GLib ................................... no iconv .................................. no ICU .................................... no Tracing backend ........................ <none> Logging backends: journald ............................. no syslog ............................... no slog2 ................................ no Using system PCRE2 ..................... no Qt Network: getifaddrs() ........................... no IPv6 ifname ............................ no libproxy ............................... no OpenSSL ................................ no Qt directly linked to OpenSSL ........ no OpenSSL 1.1 ............................ no DTLS ................................... no SCTP ................................... no Use system proxies ..................... yes Qt Gui: Accessibility .......................... yes FreeType ............................... yes Using system FreeType ................ no HarfBuzz ............................... yes Using system HarfBuzz ................ no Fontconfig ............................. no Image formats: GIF .................................. yes ICO .................................. yes JPEG ................................. yes Using system libjpeg ............... no PNG .................................. yes Using system libpng ................ no EGL .................................... no OpenVG ................................. no OpenGL: ANGLE ................................ no Desktop OpenGL ....................... yes Dynamic OpenGL ....................... no OpenGL ES 2.0 ........................ no OpenGL ES 3.0 ........................ no OpenGL ES 3.1 ........................ no OpenGL ES 3.2 ........................ no Vulkan ................................. no Session Management ..................... yes Features used by QPA backends: evdev .................................. no libinput ............................... no INTEGRITY HID .......................... no mtdev .................................. no tslib .................................. no xkbcommon .............................. no X11 specific: XLib ................................. no XCB Xlib ............................. no EGL on X11 ........................... no QPA backends: DirectFB ............................... no EGLFS .................................. no LinuxFB ................................ no VNC .................................... no Mir client ............................. no Windows: Direct 2D ............................ yes DirectWrite .......................... yes DirectWrite 2 ........................ yes Qt Sql: SQL item models ........................ yes Qt Widgets: GTK+ ................................... no Styles ................................. Fusion Windows WindowsVista Qt PrintSupport: CUPS ................................... no Qt Sql Drivers: DB2 (IBM) .............................. no InterBase .............................. no MySql .................................. no OCI (Oracle) ........................... no ODBC ................................... yes PostgreSQL ............................. no SQLite2 ................................ no SQLite ................................. no Using system provided SQLite ......... no TDS (Sybase) ........................... no Qt Testlib: Tester for item models ................. yes Qt SerialBus: Socket CAN ............................. no Socket CAN FD .......................... no Qt QML: QML network support .................... yes QML debugging and profiling support .... yes QML sequence object .................... yes QML list model ......................... yes QML XML http request ................... yes QML Locale ............................. yes QML delegate model ..................... yes Qt Quick: Direct3D 12 ............................ no AnimatedImage item ..................... yes Canvas item ............................ yes Support for Qt Quick Designer .......... yes Flipable item .......................... yes GridView item .......................... yes ListView item .......................... yes TableView item ......................... yes Path support ........................... yes PathView item .......................... yes Positioner items ....................... yes Repeater item .......................... yes ShaderEffect item ...................... yes Sprite item ............................ yes Qt Scxml: ECMAScript data model for QtScxml ...... yes Qt Gamepad: SDL2 ................................... no Qt 3D: Assimp ................................. yes System Assimp .......................... no Output Qt3D Job traces ................. no Output Qt3D GL traces .................. no Use SSE2 instructions .................. no Use AVX2 instructions .................. no Aspects: Render aspect ........................ yes Input aspect ......................... yes Logic aspect ......................... yes Animation aspect ..................... yes Extras aspect ........................ yes Qt 3D Renderers: OpenGL Renderer ........................ yes Qt 3D GeometryLoaders: Autodesk FBX ........................... no Qt Wayland Client ........................ no Qt Wayland Compositor .................... no Qt Bluetooth: BlueZ .................................. no BlueZ Low Energy ....................... no Linux Crypto API ....................... no WinRT Bluetooth API (desktop & UWP) .... no Qt Sensors: sensorfw ............................... no Qt Quick Controls 2: Styles ................................. Default Fusion Imagine Material Universal Qt Quick Templates 2: Hover support .......................... yes Multi-touch support .................... yes Qt Positioning: Gypsy GPS Daemon ....................... no WinRT Geolocation API .................. no Qt Location: Qt.labs.location experimental QML plugin . yes Geoservice plugins: OpenStreetMap ........................ yes HERE ................................. yes Esri ................................. yes Mapbox ............................... yes MapboxGL ............................. yes Itemsoverlay ......................... yes QtXmlPatterns: XML schema support ..................... yes Qt Multimedia: ALSA ................................... no GStreamer 1.0 .......................... no GStreamer 0.10 ......................... no Video for Linux ........................ no OpenAL ................................. no PulseAudio ............................. no Resource Policy (libresourceqt5) ....... no Windows Audio Services ................. no DirectShow ............................. yes Windows Media Foundation ............... no Media player backend ................... DirectShow Qt Tools: QDoc ................................... no Note: Using static linking will disable the use of dynamically loaded plugins. Make sure to import all needed static plugins, or compile needed modules into the library. Note: No wayland-egl support detected. Cross-toolkit compatibility disabled. WARNING: QDoc will not be compiled, probably because libclang could not be located. This means that you cannot build the Qt documentation. Either ensure that llvm-config is in your PATH environment variable, or set LLVM_INSTALL_DIR to the location of your llvm installation. On Linux systems you may be able to install libclang from a package. On macOS you could use Homebrew's llvm package. On Windows you need to set LLVM_INSTALL_DIR to the installation path. Qt is now configured for building. Just run 'mingw32-make'. Once everything is built, you must run 'mingw32-make install'. Qt will be installed into 'C:\install\Qt\5.12.1-static'.
[Added code tags around long text ~kshegunov]
-
-
Hi,
What if you remove the
-no-pch
option ? -
thanks for your suggestion SGaist
So I ran:
configure ...
without -no-pch (pre-compiled headers I think?)ming32-make -j8
It started to recompile, but hit the same issue. Two questions for you:
- Do I need to clean the old configuration first?
- Do I need to do a make clean?
- Why do you suspect that
-no-pch
is a problem (just for my understanding)?
I read somewhere that QVector is there, and if you replace the
#include <QVector>
with#include "qvector.h"
that file then compiles - I tired this an it worked - but it just fails further on. <QDebug> is the next one - again if I lower-case it then that file compiles. -
- Yes
- Better would be to use an out of source build
- Such an idee, since the header is missing I was wondering whether the generated headers were properly created and if that option could be responsible.
-
- Yes
- Better would be to use an out of source build
- Such an idee, since the header is missing I was wondering whether the generated headers were properly created and if that option could be responsible.
@SGaist Ok - I am doing a git clean (at least for the top level) then a reconfigure.
Weirdly
...-make clean
seems to go on forever! stopped eventually.Sorry, what do you mean by out of source build - how do I do that (or link to how to do that)?
Thanks :)
-
As the name suggest, you build from a folder that is not in the sources.
Unix style:
cd /tmp mkdir build_qt cd build_qt /path/to/configure make make install
It's easy to adapt to Windows.
By the way, why not use the MinGW version provided with Qt ?
-
thanks for your suggestion SGaist
So I ran:
configure ...
without -no-pch (pre-compiled headers I think?)ming32-make -j8
It started to recompile, but hit the same issue. Two questions for you:
- Do I need to clean the old configuration first?
- Do I need to do a make clean?
- Why do you suspect that
-no-pch
is a problem (just for my understanding)?
I read somewhere that QVector is there, and if you replace the
#include <QVector>
with#include "qvector.h"
that file then compiles - I tired this an it worked - but it just fails further on. <QDebug> is the next one - again if I lower-case it then that file compiles.As it happens I was building 5.12.2 from source today. Long story short I hit the same problem you had, but in another module and another header. It was caused by a stale configuration cache file. So, run the "really clean tree" command from the wiki and it should fix itself. I do second @SGaist's advice to build out of the source tree, however!
-
As it happens I was building 5.12.2 from source today. Long story short I hit the same problem you had, but in another module and another header. It was caused by a stale configuration cache file. So, run the "really clean tree" command from the wiki and it should fix itself. I do second @SGaist's advice to build out of the source tree, however!
@kshegunov Thanks for that, I was literally just trying to phrase a git command to clean everything - so that's a very timely reply : ))
I am not sure why I would have a stale config file though, since I checked out fresh, but I will definitely try this! - Also by using a "not in the source" build folder as @SGaist also mentioned then the stale config file issue should disappear anyway (I think) since its a fresh folder.
Anyway... trying now..
-
As the name suggest, you build from a folder that is not in the sources.
Unix style:
cd /tmp mkdir build_qt cd build_qt /path/to/configure make make install
It's easy to adapt to Windows.
By the way, why not use the MinGW version provided with Qt ?
@SGaist With regard to the mingw that comes with qt - I did not see that in the repo? There is a folder called
gnuwin32
but that just contains a few other tools - no gcc/make tools. -
@SGaist @kshegunov hummm.... after a complete clean and build in a different folder and removed
-no-pch
, I still get the same error : ( -
It's provided through the installer but right now I can't tell exactly where you can get it from outside of said installer.
-
@SGaist With regard to the mingw that comes with qt - I did not see that in the repo? There is a folder called
gnuwin32
but that just contains a few other tools - no gcc/make tools.@code_fodder said in Issue building qt 5.12 from latest git repo:
I did not see that in the repo?
There's no compiler in the repo. When building from git it's your responsibility to have to toolchain set up beforehand. @SGaist is thinking about the online installer for Qt, which indeed comes with a
mingw
distribution that can be used directly. -
@SGaist @kshegunov hummm.... after a complete clean and build in a different folder and removed
-no-pch
, I still get the same error : (Could you post the configure summary as well, so we know what we're dealing with?
-
@SGaist @kshegunov Ah, ok, yes I have used that one in the past, but for re-compiling the whole project, I wanted to create a list of steps to be able to reproducibly compile qt statically. I fugured getting mingw tool chain from source forge to be the "cleanest" option (https://sourceforge.net/projects/mingw-w64/ - v7.3.0)
Otherwise I have to install qt AND download the source from git!? ... do you think that would make a difference?
@kshegunov out of curiosity how did your static configure/build for 5.12.2 differ from what I was doing? (just looking for other ideas)
-
@SGaist @kshegunov Ah, ok, yes I have used that one in the past, but for re-compiling the whole project, I wanted to create a list of steps to be able to reproducibly compile qt statically. I fugured getting mingw tool chain from source forge to be the "cleanest" option (https://sourceforge.net/projects/mingw-w64/ - v7.3.0)
Otherwise I have to install qt AND download the source from git!? ... do you think that would make a difference?
@kshegunov out of curiosity how did your static configure/build for 5.12.2 differ from what I was doing? (just looking for other ideas)
@code_fodder said in Issue building qt 5.12 from latest git repo:
Otherwise I have to install qt AND download the source from git!? ... do you think that would make a difference?
You can install the source from the installer as well. But I doubt it'd make much of a difference.
@kshegunov out of curiosity how did your static configure/build for 5.12.2 differ from what I was doing? (just looking for other ideas)
I don't build statically. It was not much different, though, I stick to minimalistic builds:
$> git clone git://code.qt.io/qt/qt5.git 5.12 $> cd 5.12 $> git checkout 5.12 $> perl init-repository --module-subset=essential $> ./configure -developer-build -no-optimize-debug -opensource -confirm-license -nomake examples -nomake tests $> make -j12
from history. I didn't provide a prefix and did a
-developer-build
because I wanted to debug a module inside Qt itself. If you want this for application development the appropriate flags for configure are-debug -prefix <some-dir>
-
@kshegunov I have printed the config summary at the end of my question after where it says: update
-
Just tried a config like this
configure -debug -opensource -confirm-license -nomake examples -nomake tests -static -static-runtime -skip webengine -prefix "C:\install\Qt\5.12.1-static"
which more closley matches what @kshegunov mentioned - but I got the same error : (Note: git log yields (so I am also on 5.12 branch):
* 1c6f272 (HEAD -> 5.12, origin/HEAD, origin/5.12) Update submodules on '5.12' in qt5 * 391ba3a Update submodules on '5.12' in qt5 | * ce91433 (origin/dev) Fix failing to disable windows update service | * ab43850 Update submodules on 'dev' in qt5 | * d926dbe Update submodules on 'dev' in qt5 | * 99b46f7 Update submodules on 'dev' in qt5 | * 80339a1 Build MIPS64 with b2qt toolchain | * 5cfa563 Provision docker test servers based on Ubuntu 18.04 | * b4b2152 Start the docker machine and update with new TLS certificates | * 177df80 Docker Provisioning: Install docker test servers on Windows 10 (x86_64) | * ab3e348 Display the provisioned version of docker tool kits | * b97e448 Move and merge the provisioning scripts of docker to a shared folder | | * b0afdd4 (origin/5.13) Update submodules on '5.13' in qt5 | | * 2471d6d (tag: v5.13.0-alpha1) Update qtwebengine | | * 7bd38a4 Update submodules on '5.13' in qt5 | | * 26ff9bd Update submodules on '5.13' in qt5 | | * 9b84c71 Build MIPS64 with b2qt toolchain | | * 84aa9b7 Merge remote-tracking branch 'origin/dev' into 5.13 | | |\ | | |/ | |/| | * | 1830cca Update submodules on 'dev' in qt5
-
@kshegunov I have printed the config summary at the end of my question after where it says: update
The configure seems okay to me. Very odd. Do you get the same if you don't do a static build?
PS. Also try with forward slashes to exclude some path escaping nonsense.
C:/install/Qt/5.12.1-static
-
@kshegunov I just did this:
rm * -r
(I have the linux like commands installed because I prefer them - but its still just a dos prompt)configure -debug -opensource -confirm-license -nomake examples -nomake tests -skip webengine -prefix "C:/install/Qt/5.12.1-sharedlibs
mingw32-make -j8
Same issue :((
I am going to try exactly what you did! and see...
-
@kshegunov I just did this:
rm * -r
(I have the linux like commands installed because I prefer them - but its still just a dos prompt)configure -debug -opensource -confirm-license -nomake examples -nomake tests -skip webengine -prefix "C:/install/Qt/5.12.1-sharedlibs
mingw32-make -j8
Same issue :((
I am going to try exactly what you did! and see...
Just be sure to run
git submodule foreach --recursive "git clean -dfx" && git clean -dfx
before eachconfigure
, to be completely certain there's no *.cache files left over from the previous attempt.