You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Qt项目构建.deb包?含CONFIG编译配置疑问

我来给你梳理一套完整的Qt项目打包成.deb包的流程,同时先解决你提到的编译标志配置问题~

完整Qt项目构建.deb包教程(含编译标志配置)

一、先解决编译标志配置的问题

你需要在.pro文件中添加CONFIG+=USE_LIBUSB这类编译标志,操作非常直接:

  • 打开你的Qt项目根目录下的.pro文件,在依赖声明或开头位置添加对应配置项,比如:
# 启用libusb相关编译标志
CONFIG += USE_LIBUSB

# 同时记得链接对应的库(根据实际库名调整,这里以libusb-1.0为例)
LIBS += -lusb-1.0

这样qmake生成Makefile时,会自动把这些编译标志传递给编译器,确保依赖的库被正确链接。

二、完整的.deb打包流程

下面是从项目结构调整到生成deb包的全步骤,适配大多数Qt桌面项目:

1. 安装打包依赖工具

首先在Ubuntu/Debian系统中安装必要的工具:

sudo apt install build-essential debhelper qt5-default qttools5-dev-tools

2. 调整项目结构(符合deb打包规范)

建议把项目整理成如下结构,方便debhelper识别:

sultan/
├── debian/           # 核心打包配置目录(必须创建)
│   ├── changelog     # 版本更新日志
│   ├── control       # 包元信息(依赖、描述等)
│   ├── rules         # 编译规则脚本
│   ├── copyright     # 版权声明
│   └── install       # 文件安装路径配置
└── src/              # 你的Qt项目源码(原项目所有文件移到这里)
    ├── sultan.pro
    ├── ...(其他源码、资源文件)

3. 编写debian目录下的配置文件

(1)control文件(包元信息)

示例内容如下,根据你的项目修改:

Source: sultan
Section: utils
Priority: optional
Maintainer: 你的名字 <你的邮箱@example.com>
Build-Depends: debhelper-compat (= 13), qt5-default, libusb-1.0-0-dev
Standards-Version: 4.6.0
Vcs-Git: git://github.com/apinprastya/sultan.git
Vcs-Browser: https://github.com/apinprastya/sultan

Package: sultan
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, qt5-widgets, libusb-1.0-0
Description: 你的项目描述,比如:Sultan是一款基于Qt的USB设备管理工具
 更详细的功能说明可以写在这里,注意换行需要缩进
  • Build-Depends填编译时依赖的包(比如libusb的开发包),Depends填运行时依赖的包。

(2)rules文件(编译规则)

这个文件告诉debhelper如何编译你的项目,示例:

#!/usr/bin/make -f

%:
	dh $@

override_dh_auto_configure:
	dh_auto_configure -- QT_SELECT=qt5 CONFIG+=USE_LIBUSB

override_dh_auto_build:
	dh_auto_build -- QT_SELECT=qt5

这里的CONFIG+=USE_LIBUSB是把编译标志传递给qmake,和你在.pro文件中添加的效果一致,二选一即可(不用重复添加)。

(3)install文件(安装路径配置)

定义程序文件、资源的系统安装路径,示例:

src/sultan usr/bin/
src/resources/icons/sultan.png usr/share/icons/hicolor/48x48/apps/
src/sultan.desktop usr/share/applications/

把你的可执行文件、图标、桌面快捷方式映射到对应的系统目录。

(4)changelog文件(版本日志)

可以用命令自动生成:

cd sultan
dch --create -v 1.0.0-1 -D unstable

然后按照提示填写版本更新内容即可。

(5)copyright文件(版权声明)

示例内容:

Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: sultan
Upstream-Contact: Apin Prastya <你的邮箱@example.com>
Source: https://github.com/apinprastya/sultan

Files: *
Copyright: 2024 Apin Prastya
License: GPL-3.0+
License: GPL-3.0+
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
 .
 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 .
 You should have received a copy of the GNU General Public License
 along with this program. If not, see <https://www.gnu.org/licenses/>.

4. 编译生成deb包

在项目根目录(sultan/)下执行命令:

dpkg-buildpackage -us -uc

执行完成后,上级目录会生成对应的.deb文件,比如sultan_1.0.0-1_amd64.deb。

5. 测试安装

安装生成的deb包验证功能:

sudo dpkg -i ../sultan_1.0.0-1_amd64.deb
# 如果出现依赖缺失,执行:
sudo apt-get -f install

三、额外提示

  • 如果你的项目包含Qt资源文件(.qrc)、翻译文件(.ts),确保在.pro文件中正确配置,编译时会自动处理,打包时也会被包含进deb包。
  • 可以用lintian工具检查deb包是否符合规范:lintian ../sultan_1.0.0-1_amd64.deb,根据提示优化包的配置。

内容的提问来源于stack exchange,提问作者Apin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:29:14