- Building Qt 6 from Git
- Contents
- System Requirements
- System Requirements — Qt WebEngine and Qt PDF
- Getting the source code
- Getting the submodule source code
- Configuring and Building
- On Linux:
- On Windows:
- Developer Builds
- Running Tests
- Qt for Linux/X11
- Supported Configurations
- Requirements for Development Host
- Debian/Ubuntu (apt-get)
- Fedora/RHEL/CentOS (yum)
- openSUSE (zypper)
- Building Qt from Source
- Deployment and Other Issues
- Where to Go from Here
- Building Qt Sources
- General Installation Information
- Windows
- macOS
- Linux/X11
- Embedded Linux
- Android
- iOS
- Module-specific System Requirements
- Additional Information
Building Qt 6 from Git
This article provides hints for checking out and building the Qt 6 repositories. This is primarily for developers who want to contribute to the Qt library itself, or who want to try the latest unreleased code.
If you simply want to build a specific release of Qt from source to use the libraries in your own project, you can download the source code from the Official Releases page or the Archive. Alternatively, commercial customers can download the Source Packages via the Qt Account portal.
- To compile Qt Creator, see Building Qt Creator from Git.
- To compile Qt 5, see Building Qt 5 from Git.
- For the ways Linux distributions package Qt 6, see Linux distributions that build Qt 6.
Contents
System Requirements
- Git (>= 1.6.x)
- CMake (>= 3.16, >= 3.18.4 for Ninja Multi-Config, >= 3.19 for WebEngine, >= 3.21.1 for static Qt builds in Qt 6.2+, or builds for Apple platforms in Qt 6.6+)
- Ninja
- C++ compiler supporting C++ 17
- Perl (>=5.14, optional for Qt >= 6.5)
- Python (>=2.6.x)
- libclang (>=10, optional when QDoc should be built, prebuilt versions for each OS can be downloaded here or installed through the libclang-dev package on Linux)
- Windows: Visual Studio 2022, Visual Studio 2019, MinGW 11.2
- Linux: OpenGL developing library (libgl-dev, libegl-dev), libfontconfig1-dev (for fonts to be rendered correctly), libinput-dev (for the XCB platform plugin), and the XCB libraries mentioned in https://doc.qt.io/qt-6/linux-requirements.html
Note for MSVC: A suitable CMake and Ninja version are already provided by the Visual Studio 2019/2022 and don’t need to be installed separately. A Perl version which does not need a registration and also provides a zip file instead an installer is StrawberryPerl.
System Requirements — Qt WebEngine and Qt PDF
Qt WebEngine and Qt PDF have additional build requirements
- Python (>=3.6.x)
- Python html5lib
- Bison, Flex
- GPerf
- Node.js version 8 or later (version 12 or later is recommended)
- Windows: Visual Studio 2019 v16.11+ (required for QtWebEngine to address an issue with defaulted noexcept operators)
- Windows: Windows 10 SDK >= 10.0.19041.0 (version 2004) for QtWebEngine
Getting the source code
First clone the top-level Qt git repository:
$ git clone git://code.qt.io/qt/qt5.git qt6
or (if you’re behind a firewall and want to use the https protocol):
$ git clone https://code.qt.io/qt/qt5.git qt6
Do not worry about the name mentioning qt5.git. This is also used for Qt 6.
Then check out the target branch (see Branch Guidelines). Latest changes are in dev , but you may check out sources of any publicly released and tagged version, or of any currently active branch.
In order to build a specific release of Qt, you can checkout the desired tag, for example:
for the 6.3.0 release; or you could likewise checkout 6.4 for the 6.4 stabilisation branch.
For commercial-only modules and commercial-only branches of public modules, see Getting Commercial Qt Sources.
Getting the submodule source code
As described in the README.git, initialize the repository using the init-repository script, which clones the various sub-modules of Qt 6.
Relevant options for init-repository:
- --module-subset : For example, to get modules for Qt Quick development: --module-subset=qtbase,qtshadertools,qtdeclarative. You can always add or remove individual submodules later with git submodule init/deinit.
- --codereview-username : If you plan to contribute to Qt, you may specify your codereview username (pay attention to capitalization!) so that the git remotes are properly set up. Note that it is recommended to adjust your ssh configuration instead.
$ cd qt6 $ perl init-repository
Configuring and Building
Qt 6 is built with CMake, and can be configured also by just running cmake with appropriate options. We provide some convenience scripts though that makes configuring Qt, and individual Qt modules easier.
A build script called configure (or configure.bat for Windows) will be in the directory that you git cloned the source code into (~/qt6 if you followed the directions above). You will want to call that script from a different, parallel-level directory, because you do not want to build Qt in the directory that holds the source code. Instead, you should use a «shadow build», meaning you should not build into the source directory.
On Linux:
$ mkdir qt6-build $ cd qt6-build $ ../qt6/configure -prefix /path/to/install $ cmake --build . --parallel 4 $ cmake --install .
Where 4 is number of jobs. You can try your own value or use auto value using —parallel without argument.
Where dot after «—build» means current folder.
On Windows:
Make sure to open the correct command prompt (e.g. ‘x64 Native Tools Command Prompt for VS 2022’) which properly sets up the needed environment variables. Also make sure that Ninja can be found (by adding the path to ninja,exe to your PATH env var)
> mkdir qt6-build > cd qt6-build > ..\qt6\configure.bat -prefix C:\path\to\install > cmake --build . > cmake --install .
Run configure -help to get an overview of available options.
You may also pass CMake options directly to configure:
> ../qt6/configure -- -DQT_BUILD_TESTS=ON
All options which are specified after a double-dash (—), will be passed verbatim to CMake.
See cmake/configure-cmake-mapping.md in the sources for an overview of available options and how they map to CMake options.
Developer Builds
The configure option -developer-build sets the install prefix to the build directory, so that no install step is necessary. It also changes defaults so that all tests (including tests using private API that is otherwise not exported) can run.
This can take quite some time though. If you do want to be able to build the tests, but only on request, configure with CMake variable QT_BUILD_TESTS_BY_DEFAULT=OFF :
$ ../qt6/configure -developer-build -- -DQT_BUILD_TESTS_BY_DEFAULT=OFF $ cmake --build . --parallel
Later on you can then build single tests, for instance :
$ cmake --build . --target tst_qstyle
Use ninja -t targets to see all the targets that are provided in the build.
See cmake/README.md in the sources for details on how to configure and build Qt 6 with CMake.
Running Tests
Once you’ve built (as long as you you did build with tests enabled), you can run the tests either directly using ninja tst_qlocale_check (for example, to run tests/auto/corelib/text/qlocale/tst_qlocale ) or via ctest (see its man page for further options) like
(for the same example); the parameter to -R is a regular expression, matching test names. This includes the test output; if you omit -V that’s skipped and you just get a single-line summary of the test result.
If you want to run only a particular test function, you pass it using the TESTARGS environment variable. For example:
$ TESTARGS=emptyCtor ctest -V -R qlocale
And if you want to run a specific test function with a specific data-tag, you provide it after a colon:
$ TESTARGS=emptyCtor:en_GB ctest -V -R qlocale
Qt for Linux/X11
Qt’s support for different Linux platforms is extensive and mature.
To download and install Qt for Linux, follow the instructions on the Getting Started with Qt page.
Supported Configurations
The following configurations are supported.
Distribution | Architecture | Compiler | Notes |
---|---|---|---|
Red Hat 8.4 | x86_64 | GCC 10 (toolset) | |
Red Hat 9.0 | x86_64 | GCC 11 | |
openSUSE 15.4 | x86_64 | GCC 9 | |
SUSE Linux Enterprise Server 15 SP4 | x86_64 | GCC 10 | |
Ubuntu 22.04 | x86_64 | GCC as provided by Canonical, GCC 11.x |
Requirements for Development Host
The Qt installers for Linux assume that a C++ compiler, debugger, make, and other development tools are provided by the host operating system. In addition, building graphical Qt applications requires OpenGL libraries and headers installed. Most Linux distributions do not install all of these by default, but setting up a development environment is still straightforward.
Use the following commands to install the basic requirements for building Qt applications:
Debian/Ubuntu (apt-get)
sudo apt-get install build-essential libgl1-mesa-dev
Fedora/RHEL/CentOS (yum)
sudo yum groupinstall "C Development Tools and Libraries" sudo yum install mesa-libGL-devel
openSUSE (zypper)
sudo zypper install -t pattern devel_basis
Building Qt from Source
You can also build Qt from the source package and configure it according to your target platform. The source packages are obtained from http://www.qt.io/download/.
Below, you will find more information about building Qt from source.
Deployment and Other Issues
The pages below covers specific issues and recommendations for creating Linux/X11 applications.
Where to Go from Here
We invite you to explore the rest of Qt. We prepared overviews which help you decide which APIs to use and our examples demonstrate how to use our API.
- Qt Overviews — list of topics about application development
- Examples and Tutorials — code samples and tutorials
- Qt Reference Pages — a listing of C++ and QML APIs
Qt’s vibrant and active community site, http://qt.io houses a wiki, a forum, and additional learning guides and presentations.
© 2023 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.
Building Qt Sources
You can download the Qt installers and sources from the Downloads page. For more information, visit the Getting Started with Qt page.
This page lists the relevant information for installing Qt by building the Qt sources. The installation procedure is different on each Qt platform. This page collects the relevant information for the supported platforms. In addition, this page provides links to any module-specific system requirements.
General Installation Information
To build Qt from source, use configure to configure Qt for a particular platform with a particular set of Qt features or modules. For more information, visit the following page:
Windows
macOS
Linux/X11
Embedded Linux
Android
iOS
Module-specific System Requirements
Additional Information
The top-level qt5 Git repository contains a set of build instructions in the form of provisioning scripts, used by Qt’s continuous integration (CI) system to build and test the Supported Platforms. These scripts are useful for anyone building Qt from source, as they provide information on the tools and components that are required for each configuration.
© 2023 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.