QtWebEngine/Qt6Build: Difference between revisions
m remove extra 'skip webengine' |
m QtWebEngine is no longer submodule in qt5 repository |
||
| Line 3: | Line 3: | ||
Please check platform notes for required dependencies https://doc.qt.io/qt-6/qtwebengine-platform-notes.html. | Please check platform notes for required dependencies https://doc.qt.io/qt-6/qtwebengine-platform-notes.html. | ||
Starting from 6.12 QtWebEngine is no longer a submodule of qt5 repository, meaning that you if clone qt5 main repository (git://code.qt.io/qt/qt5.git) the qtwebengone module will be not there and it has | |||
to be cloned in separate step. | |||
==Overview== | |||
As a first step we clone minimum subset of modules required for QtWebEngine and compile | |||
all modules required for QtWebEngine build. Secondly we clone QtWebEngine repository and use | |||
compiled qt5 modules to build QtWebEngine. | |||
==Open the build shell== | ==Open the build shell== | ||
| Line 39: | Line 35: | ||
==Select branch== | ==Select branch== | ||
Let's assume we want to compile latest Qt 6. | Let's assume we want to compile latest Qt 6.12. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
cd qt6 | cd qt6 | ||
git checkout origin/6. | git checkout origin/6.12 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 51: | Line 47: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
./init-repository --module-subset=qtbase,qtshadertools,qtdeclarative | ./init-repository --module-subset=qtbase,qtshadertools,qtdeclarative --no-resolve-deps | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 67: | Line 63: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Configure top level build and build required submodules== | ==Configure top level build and build required qt6 submodules== | ||
From our 'build' directory we call the configure from qt6 'source' directory to make prefix build, which means that we will compile and than install to the specific installation directory defined with 'prefix' argument. | From our 'build' directory we call the configure from qt6 'source' directory to make prefix build, which means that we will compile and than install to the specific installation directory defined with 'prefix' argument. | ||
On '''Linux''' the configure command line for the release builds might look like: | On '''Linux''' the configure command line for the release builds might look like: | ||
| Line 77: | Line 71: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
../configure -release -nomake tests -nomake examples -no-pch -linker mold | ../configure -release -nomake tests -nomake examples -no-pch -linker mold -prefix /opt/qt/6.12 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 85: | Line 79: | ||
<syntaxhighlight> | <syntaxhighlight> | ||
..\configure.bat -release -nomake tests -nomake examples -no-pch | ..\configure.bat -release -nomake tests -nomake examples -no-pch -prefix C:\opt\qt\6.12 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 91: | Line 85: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
../configure -release -framework -release -nomake tests -nomake examples -no-pch | ../configure -release -framework -release -nomake tests -nomake examples -no-pch -prefix /opt/qt/6.12 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 97: | Line 91: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
../configure -release -framework -nomake tests -nomake examples -no-pch | ../configure -release -framework -nomake tests -nomake examples -no-pch -prefix /opt/qt/6.12 -- -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| Line 110: | Line 104: | ||
{{note | On Windows in case of debug and release build please use "ninja install" instead of "cmake --install ." due to cmake [https://gitlab.kitware.com/cmake/cmake/-/issues/21475 issue]}} | {{note | On Windows in case of debug and release build please use "ninja install" instead of "cmake --install ." due to cmake [https://gitlab.kitware.com/cmake/cmake/-/issues/21475 issue]}} | ||
==Obtain the Qt6 source code== | |||
Now let's focus on QtWebEngine build, first clone the repository with required sub repository. | |||
<syntaxhighlight lang="bash"> | |||
git clone git://code.qt.io/qt/qtwebengine.git qtwebengine | |||
cd qtwebengine | |||
git submodule init | |||
git submodule update | |||
</syntaxhighlight> | |||
==Configure and build QtWebEngine module== | ==Configure and build QtWebEngine module== | ||
| Line 115: | Line 120: | ||
To configure and build QtWebEngine module we use the '''qt-configure-module wrapper''' script from the installed in previous step Qt. | To configure and build QtWebEngine module we use the '''qt-configure-module wrapper''' script from the installed in previous step Qt. | ||
{{note|On Windows you might want to call 'C:\opt\qt\6. | {{note|On Windows you might want to call 'C:\opt\qt\6.12\bin\qt-cofigure-module.bat' instead of 'qt-cofigure-module'}} | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
mkdir qtwebengine | mkdir qtwebengine-build | ||
cd qtwebengine | cd qtwebengine-build | ||
/opt/qt/6. | /opt/qt/6.12/bin/qt-configure-module ../../qtwebengine | ||
cmake --build . --parallel | cmake --build . --parallel | ||
cmake --install . | cmake --install . | ||
cd .. | cd .. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Revision as of 07:55, 20 August 2026
Building Qt6 WebEngine from Source
Please check platform notes for required dependencies https://doc.qt.io/qt-6/qtwebengine-platform-notes.html.
Starting from 6.12 QtWebEngine is no longer a submodule of qt5 repository, meaning that you if clone qt5 main repository (git://code.qt.io/qt/qt5.git) the qtwebengone module will be not there and it has to be cloned in separate step.
Overview
As a first step we clone minimum subset of modules required for QtWebEngine and compile all modules required for QtWebEngine build. Secondly we clone QtWebEngine repository and use compiled qt5 modules to build QtWebEngine.
Open the build shell
All the build commands we execute in a build shell / terminal.
On Windows platform Developer Command Prompt is required, therefore for example for Visual Studio Build Tools 2022 the correct setup requires:
call "C:\Program File (x86)\Microsoft Visial Studio\2022\BuildTools\VC\Auxilary\Build\vcvarsall.bat" amd64
Note: The location of the script may vary please refer to the Microsoft documentation.
Obtain the Qt6 source code
Select the location for the source code and checkout the qt6 source:
git clone git://code.qt.io/qt/qt5.git qt6
Select branch
Let's assume we want to compile latest Qt 6.12.
cd qt6
git checkout origin/6.12
Initialize all required modules
Starting with Qt 6.8 you can simply after cloning qt5 repository and selecting branch call 'init-repository' cmake script. This will also setup all the required submodules.
./init-repository --module-subset=qtbase,qtshadertools,qtdeclarative --no-resolve-deps
Note: On Windows platform you should use 'init-repository.bat' instead of 'init-repository' command.
Shadow build
It is a common practice to compile the project in separate build directory instead of doing in-source build, therefore we create build directory:
Note: On Windows platform you should use 'md' instead of 'mkdir' command
mkdir build
cd build
Configure top level build and build required qt6 submodules
From our 'build' directory we call the configure from qt6 'source' directory to make prefix build, which means that we will compile and than install to the specific installation directory defined with 'prefix' argument.
On Linux the configure command line for the release builds might look like:
../configure -release -nomake tests -nomake examples -no-pch -linker mold -prefix /opt/qt/6.12
Note: To speed up linking time for WebEngine we decided to use mold linker.
On Windows the configure command line for the release build might look like:
..\configure.bat -release -nomake tests -nomake examples -no-pch -prefix C:\opt\qt\6.12
On Mac the configure command line for the release framework builds might look like:
../configure -release -framework -release -nomake tests -nomake examples -no-pch -prefix /opt/qt/6.12
or Mac universal build :
../configure -release -framework -nomake tests -nomake examples -no-pch -prefix /opt/qt/6.12 -- -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64"
Note: For other configure options please refer to the configure guide https://doc.qt.io/qt-6/configure-options.html
To build and install modules you just need to call cmake:
cmake --build . --parallel
cmake --install .
Note: On Windows in case of debug and release build please use "ninja install" instead of "cmake --install ." due to cmake issue
Obtain the Qt6 source code
Now let's focus on QtWebEngine build, first clone the repository with required sub repository.
git clone git://code.qt.io/qt/qtwebengine.git qtwebengine
cd qtwebengine
git submodule init
git submodule update
Configure and build QtWebEngine module
To configure and build QtWebEngine module we use the qt-configure-module wrapper script from the installed in previous step Qt.
Note: On Windows you might want to call 'C:\opt\qt\6.12\bin\qt-cofigure-module.bat' instead of 'qt-cofigure-module'
mkdir qtwebengine-build
cd qtwebengine-build
/opt/qt/6.12/bin/qt-configure-module ../../qtwebengine
cmake --build . --parallel
cmake --install .
cd ..