栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

qtwebengine6.2.2交叉版本编译适配方法

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

qtwebengine6.2.2交叉版本编译适配方法

一、前言

Qt公司把chromium集成包装为一个webengine开发库,提供很强劲的web访问能力,通常存在如下2种情况需要交叉版本编译webengine,系统中已经存在低版本qt(比如5.15.1),应用开发依赖需要高版本的webengine(比如6.2.2),或者为了适配新的CPU架构,需要设定指定的qt版本环境。

二、准备Qt环境

qt公司伟大之处就是实现了跨平台通过纯C++方式封装了一套平台无关系性的界面开发库,基本上不需要修改太多代码即可在全新的CPU架构上编译成功,

下载源码

$ wget https://download.qt.io/archive/qt/6.2/6.2.2/single/qt-everywhere-src-6.2.2.tar.xz

解压源码后设置编译安装指定目录qteverywhere, 并移除qtwebengine的目录

暂且设置安装目录/opt/qt6.2.2_everywhere

安装qtbase的依赖

$ sudo apt build-dep qtbase-opensource-src

$sudo apt-get install libpcre2-dev libdouble-conversion-dev libmysql-ocaml-dev libxkbcommon-x11-dev libsqlite3-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-render-util0-dev libxcb-xinerama0-dev libxinerama-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-render-util0-dev libxcb-xinerama0-dev libxinerama-dev libssl-dev libjpeg-dev firebird-dev libdbus-1-dev libxcb-randr0-dev libxcb-shape0-dev libxcb-sync-dev libxcb-xfixes0-dev libharfbuzz-dev libpng-dev unixodbc-dev libpq-dev freetds-dev flite1-dev libspeechd-dev libudev-dev libzstd-dev libx11-xcb-dev libglu1-mesa-dev "^libxcb.*" build-essential

配置qteverywhere

$./configure -opensource -confirm-license -prefix /opt/qt6.2.2_everywhere -release -opensource -openssl -no-rpath -optimized-qmake -dbus-linked -no-strip -no-separate-debug-info -qpa xcb -xcb -glib -icu -accessibility -no-directfb -opengl desktop -no-use-gold-linker -nomake examples -nomake tests

编译安装qt-everywhere

$ cmake --build . --parallel

$ cmake --install .

Qt will be installed into '/opt/qt6.2.2_everywhere'

三、编译webengine

下载源码

$ dget http://deb.debian.org/debian/pool/main/q/qt6-webengine/qt6-webengine_6.2.4+dfsg-7.dsc

编译安装 qtwebengine,安装依赖

$ apt install libxkbfile-dev

$ sudo apt build-dep qtwebengine-opensource-src

设置环境变量,使得qtwebengine编译使用qt5.15.3的环境

export QT_BUILDDIR=/opt/qt6.2.2_everywhere

export LD_LIBRARY_PATH=$QT_BUILDDIR/lib:$LD_LIBRARY_PATH

export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_BUILDDIR/plugins/platforms

export QT_PLUGIN_PATH=$QT_BUILDDIR/plugin

export PKG_CONFIG_PATH=$QT_BUILDDIR/lib/pkgconfig:$PKG_CONFIG_PATH

export PATH=$QT_BUILDDIR/bin:$PATH

qt版本隔离需要借助如上环境变量来实现。

应用debian目录中的patch

$ dh_quilt_patch

创建构建目录

$ mkdir build

编译前的配置

$ cd build

$cmake -DCMAKE_INSTALL_PREFIX=/ -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_SYSCONFDIR=/etc -DCMAKE_INSTALL_LOCALSTATEDIR=/var -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DCMAKE_INSTALL_RUNSTATEDIR=/run -GNinja -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu -DCMAKE_LIBRARY_PATH=x86_64-linux-gnu -DFEATURE_webengine_system_libevent=ON -DFEATURE_qtpdf_build=ON -DFEATURE_qtpdf_widgets_build=ON -DFEATURE_qtpdf_quick_build=ON -DFEATURE_webengine_proprietary_codecs=ON -DFEATURE_webengine_kerberos=ON ..

需要准备的js文件

$ touch src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lighthouse/lighthouse-dt-bundle.js

            src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/third_party/lighthouse/report-assets/report-generator.js

            src/3rdparty/chromium/third_party/devtools-frontend/src/front_end/diff/diff_match_patch.js

            src/3rdparty/chromium/third_party/jstemplate/jstemplate_compiled.js

开始编译并安装

$ ninja -C .

$ DESTDIR=/opt/qt6.2.2_everywhere ninja install

四、测试

编译simplebrower,qt提供的简易浏览器demo

拷贝一份代码,记得在终端中设置指定编译出来的QT环境变量

$ cp -r examples/webenginewidgets/simplebrowser ~/

$ cd ~/simplebrowesr

$ mkdir build & cd build

$ qmake6 ..

$ make -j8

运行简易浏览器

$ ./simplebrowser

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/890280.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号