DTK(Deepin Toolkit)
简介
DTK(Deepin Toolkit)是 deepin 操作系统的核心工具开发组件,基于 Qt 开发,旨在为用户提供高质量、高效的图形界面开发框架。它不仅提供了丰富的控件库,还具备强大的定制能力和高度的可扩展性,为 deepin 桌面操作系统注入了独特的个性与魅力。
DTK6 适配 Qt6
- 适配原因 :Qt6 是开发工具包的最新版本,相较于 Qt5 有全面革新,加强了跨平台兼容性、改进了性能,引入了更强大的图形渲染、多线程支持等新功能。为确保应用程序与最新技术同步,deepin 团队在 deepin V23 Beta 版本中完成了 DTK 对 Qt6(6.4.2)的适配。
- 适配成果 :总计 1000 +(1609)文件变动,代码新增 20000 + 行数,代码移除 10000 + 行数,deepin DTK 已完成 5 个版本迭代,100 + 次更新,累计提交代码近 20 万行,已被迁移至超过 10 个 Linux 发行版。
开发环境搭建
- 激活系统并取得 root 权限 :Deepin 社区版可直接获取 root 权限进行开发;UOS 专业版可获试用期激活,个人版联网自动激活,在设置中心进入开发者模式以使用 root 权限开发。
- 安装开发环境 :使用以下命令安装相关工具和库:
sudo sed -i "s%#deb-src%deb-src%g" /etc/apt/sources.list
sudo apt update
sudo apt install git qtcreator qt5-default build-essential
- 项目源码获取 :可使用 git 克隆 DTK 相关项目(dtkcore、dtkwidget、dtkgui、qt5integration)的代码,也可使用 apt source 命令获取源码。
- 安装依赖 :执行
sudo apt build-dep dtkcore dtkwidget dtkgui qt5integration安装 DTK 相关项目的依赖。
编译及运行
- 手动编译 :从 git 获取的代码,使用命令行编译的方法如下:
cur_dir=`pwd`
dtk_list="dtkcore dtkgui dtkwidget qt5integration"
for i in $dtk_list; do mkdir -p $i/build; cd $i/build; qmake ../*.pro CONFIG+=debug && make -j4 && cd $cur_dir; done
也可打开 qtcreator 进行编译,注意选择 debug 版本。
- 自动化编译运行脚本 :将以下内容保存到桌面上的 build.sh 文件中并执行(注意不要加 sudo,手动输入密码):
#!/bin/sh
DTK_LIST="dtkcore dtkwidget dtkgui qt5integration"
sudo sed -i "s%#deb-src%deb-src%g" /etc/apt/sources.list
sudo apt update
sudo apt -y install git qtcreator qt5-default build-essential
sudo apt -y build-dep $DTK_LIST
WORK_SPACE=~/Desktop/DTK_SRC && mkdir -p $WORK_SPACE && cd $WORK_SPACE
apt source $DTK_LIST
SRC_LIST=$(find . -maxdepth 1 -mindepth 1 -type d)
for proj in $SRC_LIST; do mkdir -p $proj/build && cd $proj/build; qmake ../\*.pro CONFIG+=debug && make -j4 && cd $WORK_SPACE; done
find . -perm /111 ! -type d ! -name "\*.\[\[:digit:\]\]" ! -regex ".*\..(svg|sh|json)" # 全部可执行文件、动态库等
echo "======================编译完成========================"
echo "示例程序:"
EXAMP=$(find . -type f -perm /111 -regex ".*\(collections\|styles\|taskbar\)")
echo "$EXAMP"
echo "动态库:"
find . -name "\*.so"
echo "单元测试:"
find . -type f -perm /111 -name "tests"
if [ -n $DISPLAY ]; then
for exe in $EXAMP; do $exe & done;
fi
如果有基于 DTK 的库开发自己的应用程序的需要,可使用以下命令安装 DTK 的库:
DTKcore
- 简介 :dtkcore 是基于 Qt 的 C++ 库,提供常用工具类及基础模块,如日志、插件、网络、线程、数据库、文件、图形、音频、视频、系统信息等。
- 使用 :dtkcore >= 5.6 版本使用 CMake 管理模块,在 CMake 项目中引入 dtkcore 的 CMake 模块的方式如下:
使用 pkg-config 查找 Dtk6Core 的方式如下:
在 qmake 中使用如下配置:
在 CMake 中使用 PkgConfig 查找 Dtk6Core:
find_package(PkgConfig REQUIRED)
pkg_check_modules(Dtk6Core REQUIRED IMPORTED_TARGET dtk6core)
target_link_libraries(<target> PkgConfig::Dtk6Core)
- 文档 :dtkcore 的文档使用 doxygen 管理,建议从模块页面开始阅读,模块页面提供了 dtkcore 的各个模块的简介及使用示例。dtkcore 的 QMake 模块会自动引入 Qt5 的 QMake 模块,但在使用 CMake 时需手动引入 Qtcore 的 CMake 模块。
许可
- DTK :使用 LGPLv3 许可证,可在该许可证下自由使用。
- DTK 文档 :使用 CC - BY - 4.0 许可证,可在该许可证下自由使用,但转发或引用时必须注明出处。
未来规划
deepin 团队将继续与最新技术保持同步,进一步提升应用程序的稳定性,为开发者和用户提供了一个更先进、更高效的体验。
相关链接
Ref
https://www.deepin.org/zh/2023-9-7/ https://docs.deepin.org/info/%E5%BC%80%E5%8F%91%E5%85%A5%E9%97%A8/%E5%9F%BA%E7%A1%80%E7%8E%AF%E5%A2%83/DTK/%E6%A6%82%E8%BF%B0/%E6%A6%82%E8%BF%B0/DTK%E5%85%A5%E9%97%A8%E6%8C%87%E5%BC%95 https://docs.deepin.org/linuxdeepin/master/dtkcore/index.html