You need to enable JavaScript to run this app. Linux下Qt Installer Framework如何制作带依赖的安装包?含deb包方案
优惠活动
大模型
产品
解决方案
定价
更多

Linux下Qt Installer Framework如何制作带依赖的安装包?含deb包方案

Qt CMake项目依赖打包方案解答

核心疑问解答

你不需要只能将*.so文件放入packages文件夹实现依赖自动安装,这只是其中一种「捆绑式分发」的实现方案,你也可以通过制作系统软件包(比如deb包)实现依赖自动拉取,两种方案的适用场景和操作方法如下:

方案1:捆绑依赖(放入so到packages目录)

  • 适用场景:需要适配多版本Linux发行版、依赖为自定义修改版本、希望安装包可独立运行不依赖系统库的场景
  • 操作方法:
    • 使用linuxdeployqt工具自动扫描你的Qt程序,收集所有依赖的Qt、OpenCV、Boost动态库文件,无需手动逐一查找
    • 将收集到的所有*.so文件和你的程序二进制、资源文件统一放入安装包的packages目录
    • 在CMake配置中给你的程序二进制设置rpath为$ORIGIN/lib,示例CMake代码:
      set_target_properties(your_target PROPERTIES INSTALL_RPATH "$ORIGIN/../lib")
      
    • 安装时将二进制文件安装到/opt/你的应用名/bin,依赖so安装到/opt/你的应用名/lib即可,程序运行时会优先加载同包内的依赖库,不会和系统库冲突

方案2:制作deb包实现依赖自动安装

该方案适合仅面向Debian/Ubuntu系列发行版分发的场景,不需要你自行打包依赖库,用户安装时系统会自动拉取官方源内的对应依赖。

前置要求

你的CMake项目已经完成安装配置,执行make install可正确将二进制、资源文件安装到对应系统路径。

具体操作步骤

  1. 项目根目录下创建debian文件夹,编写以下必要配置文件:
    • control:存放包元信息和依赖声明,示例内容:
      Package: your-app-name
      Version: 1.0.0
      Section: utils
      Priority: optional
      Architecture: amd64
      Maintainer: 你的名称 <你的邮箱>
      Depends: qt5-default, libopencv-dev, libboost-all-dev, ${shlibs:Depends}, ${misc:Depends}
      Description: 你的应用的简短说明
       这里可以填写更长的应用描述,行首需要保留一个空格
      
    • rules:编译打包规则,直接使用dh工具自动处理CMake项目,内容如下:
      #!/usr/bin/make -f
      %:
      	dh $@ --buildsystem=cmake
      
      编写完成后执行chmod +x debian/rules赋予可执行权限
    • 新增compat文件,写入你的debhelper兼容版本,直接填写10即可适配绝大多数系统
    • 执行dch --create生成changelog文件,按照提示填写版本更新信息即可
  2. 项目根目录执行打包命令:
    dpkg-buildpackage -us -uc -b
  3. 命令执行完成后,父级目录会生成后缀为.deb的安装包
  • 安装使用方法:用户拿到deb包后执行sudo dpkg -i your-app.deb && sudo apt install -f,系统会自动安装所有声明的依赖,无需额外操作

注意:该方案依赖官方源内的库版本,如果你的项目需要特定版本的依赖,需要在control文件的Depends字段指定版本号,或者选择方案1捆绑对应版本的so文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 19:54:03