Skip to content

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 的库:

sudo apt -y install deepin-sdk

DTKcore

  • 简介 :dtkcore 是基于 Qt 的 C++ 库,提供常用工具类及基础模块,如日志、插件、网络、线程、数据库、文件、图形、音频、视频、系统信息等。
  • 使用 :dtkcore >= 5.6 版本使用 CMake 管理模块,在 CMake 项目中引入 dtkcore 的 CMake 模块的方式如下:
find_package(Dtk6Core REQUIRED)
target_link_libraries(<target> Dtk6::Core)

使用 pkg-config 查找 Dtk6Core 的方式如下:

pkg-config --cflags --libs dtk6core

在 qmake 中使用如下配置:

CONFIG += link_pkgconfig
PKGCONFIG += dtk6core

在 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