TLDR: We need force cross-build the compilation of WebEngine tools when cross-compiling for Windows ARM64, to ensure that native development on Windows ARM64 hosts can use the WebEngine tools. Long version: We have two packaging configurations for Windows ARM64. 1) we cross-compile 'Windows On Arm' Qt on an x64 Windows host. This configuration includes the WoA WebEngine libraries, but not the tools. 2) we build Windows on Arm Qt on a native arm64 windows host. This currently lacks the WebEngine libraries and tools, because it takes too much time to build them on native arm hosts in the CI. When installing WoA on a Windows host using the Qt online installer, there are three possible scenarios: a) Running the x64 installer on an x64 Windows host, to be able to cross-build projects targeting Windows on Arm. This will install an x64 MSVC host qt, and an arm64 WoA target Qt from case '1' above. The x64 qt includes the WebEngine libraries and tools, and the WoA qt only includes the libraries, but not the tools. For WoA project builds, the build system will use the x64 host tools. This works fine. b) Running the x64 installer on an arm64 Windows host. This is very similar to the 'a' case, except it involves emulation of the x64 host tools. This will install an x64 MSVC host qt, and an arm64 WoA target Qt. The x64 qt includes the WebEngine libraries and tools, and the WoA qt only includes the libraries, but not the tools. For WoA project builds, the build system will use the x64 host tools using /emulation/. This works fine, as long as x64 emulation is available and enabled. c) Running the arm64 installer on an arm64 Windows host. This will install the native arm64 WoA Qt from case '2' above. The arm64 qt includes arm libraries and tools from case '2', but that lacks the WebEngine libraries and tools. So the installer will also install the cross-compiled arm64 WebEngine libraries from case '1', but not the WebEngine tools (e.g. dict conversion tool). To ensure that scenario 'c' also gets WebEngine tools, we need to force build (cross-compile) the tools in scenario '1'. This patch achieves that by passing -DQT_FORCE_BUILD_TOOLS=ON , similar how we do it for yocto builds. Pick-to: 6.9 6.10 Task-number: QTBUG-138859 Change-Id: I8270731a4afef7ab9af8df63326fb838e02968e8 Reviewed-by: Michal Klocek <michal.klocek@qt.io> Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
HOW TO BUILD Qt 6
Synopsis
System requirements
- C++ compiler supporting the C++17 standard
- CMake
- Ninja
- Python 3
For more details, see also https://doc.qt.io/qt-6/build-sources.html
Linux, Mac:
cd <path>/<source_package>
./configure -prefix $PWD/qtbase
cmake --build .
Windows:
- Open a command prompt.
- Ensure that the following tools can be found in the path:
- Supported compiler (Visual Studio 2022 or later, or MinGW-builds gcc 13.1 or later)
- Python 3 ([https://www.python.org/downloads/windows/] or from Microsoft Store)
cd <path>\<source_package>
configure -prefix %CD%\qtbase
cmake --build .
More details follow.
Build!
Qt is built with CMake, and a typical
configure && cmake --build . build process is used.
If Ninja is installed, it is automatically chosen as CMake generator.
Some relevant configure options (see configure -help):
-releaseCompile and link Qt with debugging turned off.-debugCompile and link Qt with debugging turned on.
Example for a release build:
./configure -prefix $PWD/qtbase
cmake --build .
Example for a developer build: (enables more autotests, builds debug version of libraries, ...)
./configure -developer-build
cmake --build .
See output of ./configure -help for documentation on various options to
configure.
The above examples will build whatever Qt modules have been enabled by default in the build system.
It is possible to build selected repositories with their dependencies by doing
a ninja <repo-name>/all. For example, to build only qtdeclarative,
and the modules it depends on:
./configure
ninja qtdeclarative/all
This can save a lot of time if you are only interested in a subset of Qt.
Hints
The submodule repository qtrepotools contains useful scripts for
developers and release engineers. Consider adding qtrepotools/bin
to your PATH environment variable to access them.
Building Qt from git
See http://wiki.qt.io/Building_Qt_6_from_Git and README.git for more information. See http://wiki.qt.io/Qt_6 for the reference platforms.
Documentation
After configuring and compiling Qt, building the documentation is possible by running
cmake --build . --target docs
After having built the documentation, you need to install it with the following command:
cmake --build . --target install_docs
The documentation is installed in the path specified with the
configure argument -docdir.
Information about Qt's documentation is located in qtbase/doc/README
Note: Building the documentation is only tested on desktop platforms.