Qt 实战 05|Qt6 + CMake 跨平台桌面应用 完整工程 + 全平台打包发布

发布时间:2026/6/12 13:52:13

Qt 实战 05|Qt6 + CMake 跨平台桌面应用 完整工程 + 全平台打包发布 一、技术栈说明框架Qt 6.5 LTS主流稳定版本构建工具CMakeQt6 默认推荐替代传统 qmake/.pro目标一套代码编译运行在 Windows / Linux /macOS项目类型标准 QWidget 桌面应用二、第一步创建 Qt6 CMake 工程Qt Creator 新建项目 →Qt Widgets Application构建系统选择CMake选择 Qt6.5 编译套件完成创建。三、工程目录结构plaintextQt6_CrossApp/ ├── CMakeLists.txt # CMake 主配置文件 ├── main.cpp # 程序入口 ├── mainwindow.h/cpp/ui # 主窗口代码 ├── resources.qrc # 资源文件(可选) └── CMakeLists.txt.user # 本地配置(忽略)四、核心 CMakeLists.txt 解析Qt6 标准模板cmakecmake_minimum_required(VERSION 3.16) # 项目名称、版本、语言 project(Qt6_CrossApp VERSION 0.1 LANGUAGES CXX) # 设置C标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找Qt模块 find_package(Qt6 REQUIRED COMPONENTS Core Widgets) # Qt标准工程设置自动处理MOC、资源、UI qt_standard_project_setup() # 添加可执行程序 源码/UI/资源 qt_add_executable(Qt6_CrossApp main.cpp mainwindow.cpp mainwindow.h mainwindow.ui resources.qrc ) # 链接Qt库 target_link_libraries(Qt6_CrossApp PRIVATE Qt6::Core Qt6::Widgets) # Windows生成独立exe不弹出控制台窗口 set_target_properties(Qt6_CrossApp PROPERTIES WIN32_EXECUTABLE ON MACOSX_BUNDLE ON )五、基础业务代码示例main.cppcpp运行#include mainwindow.h #include QApplication int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }mainwindow 自行编写业务逻辑即可CMake 会自动处理ui_*.h、MOC 代码。六、跨平台编译通用规则必须切换为Release 模式编译发布专用源码路径、资源路径统一使用相对路径禁止绝对路径外部依赖库统一放在工程目录CMake 追加链接。七、全平台打包发布教程1. Windows 平台打包Release 编译在build-xxx-Release目录找到Qt6_CrossApp.exe新建文件夹拷贝 exe 进去打开Qt6 对应命令行工具进入该文件夹执行bash运行windeployqt Qt6_CrossApp.exe工具自动拷贝所有 Qt 依赖库、平台插件、样式插件整个文件夹即可拷贝到其他 Windows 机器直接运行进阶使用 Inno Setup / NSIS 制作单文件安装包。2. Linux 平台打包Release 编译生成可执行文件Qt6_CrossApp查看依赖库bash运行ldd Qt6_CrossApp新建目录将可执行文件 所有.so依赖库放入编写启动脚本run.shbash运行#!/bin/bash export LD_LIBRARY_PATH./ ./Qt6_CrossApp添加执行权限chmod x run.sh整体目录压缩分发到其他 Linux 系统。3. macOS 平台打包Release 编译生成.app程序包终端进入目录执行 Qt 自带部署工具bash运行macdeployqt Qt6_CrossApp.app -dmg命令自动整理依赖并直接生成.dmg镜像文件用于分发安装。八、CMake 工程扩展添加新文件 / 模块新增.h/.cpp/.ui直接在qt_add_executable中追加文件名需要网络 / 数据库 / 串口等模块find_package(Qt6 REQUIRED COMPONENTS Core Widgets Network Sql SerialPort)target_link_libraries(xxx PRIVATE Qt6::Network Qt6::Sql ...)九、踩坑总结Qt6 不再默认兼容 Qt5 旧语法C 建议使用 C17跨平台路径大小写敏感Linux/macOS 严格区分文件名大小写Debug 版本带调试符号体积大且无法在无 Qt 环境运行发布务必用 Release外部第三方库需要针对不同平台分别编译对应版本。小结Qt6 CMake是目前工业界主流的 Qt 跨平台工程方案配置简洁、依赖管理强大、跨平台兼容性优秀。掌握本套工程结构 三平台打包流程即可开发商用级跨平台桌面软件。全系列完结说明至此Qt 从入门语法 → 控件 → 样式 → 多线程 / 网络 / 数据库 / 串口 → QML 动态 UI → 五大综合实战项目全套博客完成覆盖个人学习、课程设计、小型商用项目全部技术栈代码均可直接编译运行。

相关新闻