完整的 Qt 6 + CMake 跨平台项目模板

✅ 一、目录结构示例

MyApp/
├── CMakeLists.txt
├── main.cpp
├── mainwindow.cpp
├── mainwindow.h
├── mainwindow.ui
└── platform/
    ├── ios/
    └── android/

✅ 二、顶层 CMakeLists.txt

cmake_minimum_required(VERSION 3.16)
project(MyApp LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

# Qt 6 查找
find_package(Qt6 REQUIRED COMPONENTS Widgets)

add_executable(MyApp
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
)

target_link_libraries(MyApp PRIVATE Qt6::Widgets)

# 平台特定设置
if(APPLE)
    set_target_properties(MyApp PROPERTIES MACOSX_BUNDLE TRUE)
elseif(ANDROID)
    set_target_properties(MyApp PROPERTIES ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_SOURCE_DIR}/platform/android")
endif()

✅ 三、主程序 main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[]) {
#if defined(Q_OS_ANDROID)
    QGuiApplication app(argc, argv);
#else
    QApplication app(argc, argv);
#endif
    MainWindow w;
    w.show();
    return app.exec();
}

✅ 四、UI 代码(mainwindow.h / mainwindow.cpp

简单的窗口类,内容略,可参考 Qt Designer。

✅ 五、构建和部署平台支持说明

✅ macOS / Linux / Windows

使用 Qt 官方提供的 CMake 支持,直接构建:

cmake -B build -DCMAKE_PREFIX_PATH=/path/to/Qt6
cmake --build build

✅ Android

安装 Qt for Android 后:

cmake -B build_android -DCMAKE_TOOLCHAIN_FILE=$Qt6_ANDROID/armv7/lib/cmake/Qt6/qt.toolchain.cmake
cmake --build build_android

✅ iOS

确保 Xcode 中安装 Qt6 iOS 工具链:

cmake -B build_ios -GXcode -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_PREFIX_PATH=/path/to/Qt6
cmake --build build_ios --config Release

然后用 Xcode 打开 .xcodeproj 进行签名和部署。

✅ 六、平台兼容技巧建议

技巧建议
条件编译使用 #ifdef Q_OS_WIN / Q_OS_MAC / Q_OS_ANDROID / Q_OS_IOS 控制平台特有代码
图片资源使用 Qt 的 qrc 机制统一打包
输入输出尽量使用 Qt 提供的 QFile、QDir、QStandardPaths 等跨平台封装类
构建工具尽量统一使用 CMake + Ninja 管理构建

✅ 七、Qt 多平台支持说明

平台支持版本特别说明
Windows✅ MSVC / MinGW无需额外配置
macOS✅ Clang可打包为 .app
Linux✅ GCC建议静态编译或 AppImage
Android✅ arm64-v8aQt 自带 Gradle 项目支持
iOS✅ arm64Xcode 打包签名

关于Zeno Chen

本人涉及的领域较多,杂而不精 程序设计语言: Perl, Java, PHP, Python; 数据库系统: MySQL,Oracle; 偶尔做做电路板的开发,主攻STM32单片机
此条目发表在C/C++分类目录。将固定链接加入收藏夹。