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

Ubuntu下Qt项目能否用普通Makefile/CMake?如何制作.deb安装包?

当然可以!针对你的两个核心问题,我来给你详细解答:

一、Qt项目可以用CMake或手写Makefile替代Qmake

1. 推荐用CMake(官方支持,更灵活)

Qt从5.x开始就官方支持CMake,到Qt6更是把CMake作为推荐构建工具,完全可以替代Qmake。你可以把现有的Calculator.pro转换成CMakeLists.txt,结合你的.pro内容,示例如下:

cmake_minimum_required(VERSION 3.16)

# 项目名称和版本
project(Calculator VERSION 1.0.0 LANGUAGES CXX)

# 设置C++标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# 查找Qt组件(对应你.pro里的QT += core gui widgets)
find_package(Qt6 REQUIRED COMPONENTS Core Widgets)
# 如果是Qt5,把Qt6改成Qt5即可
# find_package(Qt5 REQUIRED COMPONENTS Core Widgets)

# 自动处理moc、uic、rcc(Qt的元对象、UI编译、资源文件工具)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

# 源文件列表(对应你.pro里的SOURCES)
set(SOURCES
    main.cpp
    mainwindow.cpp
    error.cpp
    # 把你剩下的源文件都加在这里
)

# 如果有UI文件,也要加进来
# set(UI_FILES
#     mainwindow.ui
# )

# 添加可执行文件
add_executable(Calculator ${SOURCES})

# 链接Qt库
target_link_libraries(Calculator PRIVATE Qt6::Core Qt6::Widgets)
# Qt5的话是:target_link_libraries(Calculator PRIVATE Qt5::Core Qt5::Widgets)

# 设置安装路径(可选,后面打包会用到)
install(TARGETS Calculator DESTINATION bin)

使用的时候,只需要在项目目录下执行:

mkdir build && cd build
cmake ..
make

2. 手写普通Makefile(可行但不推荐)

理论上可以手写Makefile,但Qt项目需要处理**moc(元对象编译)、uic(UI文件编译)、rcc(资源文件编译)**这些额外步骤,手写会非常繁琐,容易出错。比如你需要手动调用moc生成moc_*.cpp文件,再把这些文件加入编译列表,还要处理头文件依赖。除非你的项目极其简单,否则不建议这么做。

二、在Ubuntu上生成.deb安装包

针对Ubuntu系统,有几种靠谱的方式生成.deb包,结合CMake的话会更顺畅:

1. 用CMake+CPack(最简单,推荐)

CPack是CMake自带的打包工具,支持直接生成deb包。只需要在上面的CMakeLists.txt末尾添加以下配置:

# CPack配置
set(CPACK_PACKAGE_NAME "Calculator")
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION})
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A simple calculator application built with Qt")
set(CPACK_PACKAGE_CONTACT "your-email@example.com")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Your Name")
set(CPACK_DEBIAN_PACKAGE_DEPENDS "qt6-base-core, qt6-base-widgets") # 替换成你实际依赖的Qt版本包,Qt5的话是qtbase5-core, qtbase5-widgets
set(CPACK_GENERATOR "DEB")

include(CPack)

然后在build目录下执行:

make install
cpack -G DEB

执行完后,build目录下就会生成类似Calculator-1.0.0-Linux.deb的安装包,用户可以直接用dpkg -i安装。

2. 传统Debian打包方式(更定制化)

如果你需要更精细地控制包的内容、依赖、安装脚本等,可以用Debian官方的打包流程:

  • 在项目根目录创建debian文件夹
  • 里面创建control、rules、copyright等文件(具体格式可参考Debian打包规范)
  • 然后执行debuild -us -uc生成deb包。这种方式适合需要发布到官方软件源的场景,但学习成本稍高。

3. 用fpm工具(快速生成)

如果不想折腾CMake或Debian打包规则,可以用fpm工具快速从二进制文件生成deb包:

  1. 先安装fpm:sudo apt install ruby ruby-dev && sudo gem install fpm
  2. 编译你的Qt项目,得到Calculator二进制文件
  3. 执行命令:
fpm -s dir -t deb -n calculator -v 1.0.0 -d "qt6-base-core, qt6-base-widgets" ./Calculator=/usr/bin/

这样就能直接生成deb包,适合快速测试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:48:50