Qt 5.15 Release and QtPDF Build Instructions: Difference between pages

From Qt Wiki
(Difference between pages)
Jump to navigation Jump to search
 
(remove broken link to marketplace)
 
Line 1: Line 1:
Release blog post: https://www.qt.io/blog/qt-5.15-released
QtPdf binaries are available from the Qt installer; but here's how to build it yourself.


Announce: https://lists.qt-project.org/pipermail/announce/2020-May/000234.html
==Building the 5.15 version==
[[Category:Release]]


= Contact Information =
*sources for QtPdf module are hosted within QtWebEngine repository. Let's clone and initialize the git repository:


{| class="wikitable"
<pre>
!'''Role'''
$ git clone https://code.qt.io/qt/qtwebengine.git
!'''Name'''
$ cd qtwebengine
!'''Email'''
$ git checkout 5.15
!'''irc'''
$ git submodule update --init --recursive
|-
$ cd ..
|Release Manager
</pre>
|Jani Heikkinen
|jani.heikkinen@qt.io
|jaheikki3
|}


= Qt 5.15 release plan =
*fortunately build of QtWebEngine itself is not necessary for QtPdf build; therefore let's configure shadow build with:


{| class="wikitable"
<pre>
!'''Phase'''
$ mkdir build
!'''Original plan'''
$ cd build
!'''Updated plan'''
$ qmake ../qtwebengine -- -no-build-qtwebengine-core
!'''Realized'''
</pre>
|-
| Feature Freeze
|31.01.2020
|
|31.1.2020
|-
| Alpha Release
|04.02.2020
|
|14.02.2020
|-
| Beta1 Release
|25.02.2020
|
|28.02.2020
|-
|Beta2 Release
|12.3.2020
|20.3.2020
|23.03.2020
|-
|Soft String Freeze
|
|25.03.2020
|25.3.2020
|-
| String freeze
|
|1.4.2020
|1.4.2020
|-
|Beta3 Release
|
|3.4.2020
|6.4.2020
|-
| Branch 5.15.0 from 5.15
|
|22.4.2020
|23.4.2020
|-
|Beta4 release
|
|16.4.2020
|20.4.2020
|-
|Release Candidate
|30.04.2020
|
|06.05.2020
|-
|RC2
|
|12.5.2020
|12.05.2020
|-
| Final Release
|15.05.2020
|26.5.2020
|26.5.2020
|-
|5.15.1
|August 2020
|
|
|}


= Tools used when building & packaging Qt 5.15 =
*you should see configuration summary after previous step:


* [[Qt 5.15 Tools and Versions]]
<pre>
Configure summary:


= Qt 5.15 release team meeting memos =
Qt WebEngine Build Tools:
  Use System Ninja ....................... yes
  Use System Gn .......................... no
  Jumbo Build Merge Limit ................ 8
  Developer build ........................ no
  QtWebEngine required system libraries:
    fontconfig ........................... yes
    dbus ................................. yes
    nss .................................. yes
    khr .................................. yes
    glibc ................................ yes
  QtWebEngine required system libraries for qpa-xcb:
    x11 .................................. yes
    libdrm ............................... yes
    xcomposite ........................... yes
    xcursor .............................. yes
    xi ................................... yes
    xtst ................................. yes
  Optional system libraries used:
    re2 .................................. yes
    icu .................................. no
    libwebp, libwebpmux and libwebpdemux . yes
    opus ................................. yes
    ffmpeg ............................... no
    libvpx ............................... yes
    snappy ............................... yes
    glib ................................. yes
    zlib ................................. yes
    minizip .............................. yes
    libevent ............................. yes
    jsoncpp .............................. yes
    protobuf ............................. yes
    libxml2 and libxslt .................. yes
    lcms2 ................................ yes
    png .................................. yes
    JPEG ................................. yes
    harfbuzz ............................. yes
    freetype ............................. yes
    xkbcommon ............................ yes
Qt PDF:
  Support V8 ............................. no
  Support XFA ............................ no
  Support XFA-BMP ........................ no
  Support XFA-GIF ........................ no
  Support XFA-PNG ........................ no
  Support XFA-TIFF ....................... no
Qt PDF Widgets:
  Support Qt PDF Widgets ................. yes


[https://lists.qt-project.org/pipermail/releasing/2019-December/002702.html 03.12.2019] 'Initial Qt 5.15.0 schedule'
Note: QtWebEngine build is disabled by user.


[https://lists.qt-project.org/pipermail/releasing/2019-December/002705.html 10.12.2019]
Note: The following modules are not being compiled in this configuration:
    webenginecore
    webengine
    webenginewidgets


[https://lists.qt-project.org/pipermail/releasing/2020-January/002710.html 07.01.2020]
Qt is now configured for building. Just run 'make'.  
Once everything is built, you must run 'make install'.  
Qt will be installed into '/usr'.
</pre>


[https://lists.qt-project.org/pipermail/releasing/2020-January/002716.html 21.01.2020]
*QtPdf build will use '''gn''' and '''ninja''' to build Pdfium which is required for the QtPdf module.  Let's perform the build:


[https://lists.qt-project.org/pipermail/releasing/2020-January/002720.html 21.01.2020]
<pre>
$ NINJAJOBS=-j4 make -j4 && make install
</pre>


[https://lists.qt-project.org/pipermail/releasing/2020-February/002747.html 11.02.2020]
==Building the 6.3 version==


[https://lists.qt-project.org/pipermail/releasing/2020-February/002750.html 25.02.2020]
*sources for QtPdf module are hosted within QtWebEngine repository. Let's clone and initialize the git repository:


[https://lists.qt-project.org/pipermail/releasing/2020-March/002753.html 10.03.2020]
<pre>
$ git clone https://code.qt.io/qt/qtwebengine.git
$ cd qtwebengine
$ git checkout 6.3
$ git submodule update --init --recursive
$ cd ..
</pre>


[https://lists.qt-project.org/pipermail/releasing/2020-March/002756.html 17.03.2020]
* Install html5lib:


[https://lists.qt-project.org/pipermail/releasing/2020-March/002759.html 24.03.2020]
pip3 install html5lib


31[https://lists.qt-project.org/pipermail/releasing/2020-March/002762.html .03.2020]
*configure shadow build with:


[https://lists.qt-project.org/pipermail/releasing/2020-April/002768.html 14.04.2020]
<pre>
$ mkdir build
$ cd build
$ qt-configure-module ../qtwebengine -- -DFEATURE_qtwebengine_build=OFF
</pre>


[https://lists.qt-project.org/pipermail/releasing/2020-April/002773.html 28.04.2020]
*build the pdf


[https://lists.qt-project.org/pipermail/releasing/2020-May/002777.html 12.05.2020]
<pre>
$ cmake --build . --parallel
</pre>


{{Release Information}}
Since QtPdf comes with Qml and Widget APIs examples using those can be found in examples/pdf and examples/pdfwidgets.
 
'''In case of any issues please open bug report for PDF component in https://bugreports.qt.io/<nowiki/>.'''
 
==Historical repository==
 
The older version in the [https://code.qt.io/cgit/qt-labs/qtpdf.git/ Qt Labs QtPDF repository] still exists, but development now continues in the [https://code.qt.io/cgit/qt/qtwebengine.git/tree/src/pdf qtwebengine repository].  This was prompted mainly by the upstream Chromium switch of build system from gyp to gn: it was some work to get qtwebengine building with that.  Chromium (and thus Qt WebEngine) includes PDFium already; so it was easier to build QtPDF from there than to fix the build in the other repository.

Latest revision as of 23:58, 28 June 2024

QtPdf binaries are available from the Qt installer; but here's how to build it yourself.

Building the 5.15 version

  • sources for QtPdf module are hosted within QtWebEngine repository. Let's clone and initialize the git repository:
$ git clone https://code.qt.io/qt/qtwebengine.git
$ cd qtwebengine
$ git checkout 5.15
$ git submodule update --init --recursive
$ cd ..
  • fortunately build of QtWebEngine itself is not necessary for QtPdf build; therefore let's configure shadow build with:
$ mkdir build
$ cd build
$ qmake ../qtwebengine -- -no-build-qtwebengine-core
  • you should see configuration summary after previous step:
Configure summary: 

Qt WebEngine Build Tools:
  Use System Ninja ....................... yes
  Use System Gn .......................... no
  Jumbo Build Merge Limit ................ 8
  Developer build ........................ no
  QtWebEngine required system libraries:
    fontconfig ........................... yes
    dbus ................................. yes
    nss .................................. yes
    khr .................................. yes
    glibc ................................ yes
  QtWebEngine required system libraries for qpa-xcb:
    x11 .................................. yes
    libdrm ............................... yes
    xcomposite ........................... yes
    xcursor .............................. yes
    xi ................................... yes
    xtst ................................. yes
  Optional system libraries used:
    re2 .................................. yes
    icu .................................. no
    libwebp, libwebpmux and libwebpdemux . yes
    opus ................................. yes
    ffmpeg ............................... no
    libvpx ............................... yes
    snappy ............................... yes
    glib ................................. yes
    zlib ................................. yes
    minizip .............................. yes
    libevent ............................. yes
    jsoncpp .............................. yes
    protobuf ............................. yes
    libxml2 and libxslt .................. yes
    lcms2 ................................ yes
    png .................................. yes
    JPEG ................................. yes
    harfbuzz ............................. yes
    freetype ............................. yes
    xkbcommon ............................ yes
Qt PDF:
  Support V8 ............................. no
  Support XFA ............................ no
  Support XFA-BMP ........................ no
  Support XFA-GIF ........................ no
  Support XFA-PNG ........................ no
  Support XFA-TIFF ....................... no
Qt PDF Widgets:
  Support Qt PDF Widgets ................. yes

Note: QtWebEngine build is disabled by user.

Note: The following modules are not being compiled in this configuration:
    webenginecore
    webengine
    webenginewidgets

Qt is now configured for building. Just run 'make'. 
Once everything is built, you must run 'make install'. 
Qt will be installed into '/usr'.
  • QtPdf build will use gn and ninja to build Pdfium which is required for the QtPdf module. Let's perform the build:
$ NINJAJOBS=-j4 make -j4 && make install

Building the 6.3 version

  • sources for QtPdf module are hosted within QtWebEngine repository. Let's clone and initialize the git repository:
$ git clone https://code.qt.io/qt/qtwebengine.git
$ cd qtwebengine
$ git checkout 6.3
$ git submodule update --init --recursive
$ cd ..
  • Install html5lib:
pip3 install html5lib
  • configure shadow build with:
$ mkdir build
$ cd build
$ qt-configure-module ../qtwebengine -- -DFEATURE_qtwebengine_build=OFF
  • build the pdf
$ cmake --build . --parallel

Since QtPdf comes with Qml and Widget APIs examples using those can be found in examples/pdf and examples/pdfwidgets.

In case of any issues please open bug report for PDF component in https://bugreports.qt.io/.

Historical repository

The older version in the Qt Labs QtPDF repository still exists, but development now continues in the qtwebengine repository. This was prompted mainly by the upstream Chromium switch of build system from gyp to gn: it was some work to get qtwebengine building with that. Chromium (and thus Qt WebEngine) includes PDFium already; so it was easier to build QtPDF from there than to fix the build in the other repository.