Alexandru Croitor 9254959ace CMake: Force build tools when cross-compiling for Windows ARM64
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>
2025-08-08 18:31:36 +02:00
2025-02-21 12:59:40 +01:00
2016-06-28 15:58:12 +00:00
2016-06-28 15:58:12 +00:00
2016-06-28 15:58:12 +00:00
2025-02-21 12:59:40 +01:00
2025-02-20 08:53:41 +01:00
2012-09-05 14:33:37 +02:00
2022-06-23 08:18:48 +02:00
2023-09-23 10:27:29 +02:00
2025-02-21 12:59:40 +01:00

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:

  1. Open a command prompt.
  2. Ensure that the following tools can be found in the path:
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):

  • -release Compile and link Qt with debugging turned off.
  • -debug Compile 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.

Description
No description provided
Readme 18 MiB
Languages
Shell 58.7%
PowerShell 24.7%
CMake 14.6%
Perl 1.3%
Dockerfile 0.3%
Other 0.3%