Qt pro 多项目、子目录、多层级配置(超级详细 + 实战模板)

目录

[Qt pro 多项目、子目录、多层级配置(超级详细 + 实战模板)](#Qt pro 多项目、子目录、多层级配置(超级详细 + 实战模板))

一、核心概念:什么是多项目子目录(subdirs)?

典型项目结构(最标准)

核心规则

[二、最外层总 pro(关键!)](#二、最外层总 pro(关键!))

[三、子项目 pro 写法](#三、子项目 pro 写法)

[1. 库项目 CoreLib.pro](#1. 库项目 CoreLib.pro)

[2. 主程序 App.pro](#2. 主程序 App.pro)

四、多层级嵌套(子目录里还有子目录)

[第二层 Libraries.pro](#第二层 Libraries.pro)

[总 Project.pro](#总 Project.pro)

五、最常用高级配置

[1. 统一输出目录(所有 exe、dll 放一起)](#1. 统一输出目录(所有 exe、dll 放一起))

[2. 子项目共享配置](#2. 子项目共享配置)

[3. 指定只编译某些模块](#3. 指定只编译某些模块)

[六、总结(面试 + 实战必背)](#六、总结(面试 + 实战必背))

[1. 多项目核心](#1. 多项目核心)

[2. 优点](#2. 优点)

[3. 一句话面试答案](#3. 一句话面试答案)

[手把手教你:Qt Creator 中配置多项目子目录(subdirs)](#手把手教你:Qt Creator 中配置多项目子目录(subdirs))

一、最终要做成的项目结构(先看结果)

[二、第 1 步:创建「总工程」(最关键)](#二、第 1 步:创建「总工程」(最关键))

[三、第 2 步:往总工程里添加「子项目」](#三、第 2 步:往总工程里添加「子项目」)

[四、第 3 步:Qt Creator 会自动帮你配置好!](#四、第 3 步:Qt Creator 会自动帮你配置好!)

[五、第 4 步:配置「依赖关系」(必须做)](#五、第 4 步:配置「依赖关系」(必须做))

[六、第 5 步:让主程序 App 能使用库](#六、第 5 步:让主程序 App 能使用库)

[七、第 6 步:统一输出目录(所有 exe、dll 放一起)](#七、第 6 步:统一输出目录(所有 exe、dll 放一起))

[八、最终效果(Qt Creator 里长这样)](#八、最终效果(Qt Creator 里长这样))

[九、超级重点总结(Qt Creator 多项目口诀)](#九、超级重点总结(Qt Creator 多项目口诀))


Qt pro 多项目、子目录、多层级配置(超级详细 + 实战模板)

这是Qt 大型项目必备技能 ,也是面试高频题 ,我给你讲最清晰、最标准、可直接落地的多层级 pro 配置方案。


一、核心概念:什么是多项目子目录(subdirs)?

一个大项目分成多个小项目 ,每个小项目有自己的 .pro,最外层用一个总 pro 管理它们。

典型项目结构(最标准)

plaintext

复制代码
MyBigProject/         # 总工程
├── MyBigProject.pro # 总配置(TEMPLATE = subdirs)
├── App/             # 主程序(exe)
│   ├── App.pro
│   └── main.cpp
├── CoreLib/         # 核心库(dll/lib)
│   ├── CoreLib.pro
│   └── xxx.cpp
└── UiTools/         # 工具库
    ├── UiTools.pro
    └── xxx.cpp

核心规则

  1. 总 proTEMPLATE = subdirs
  2. 子 proapplib
  3. 总 pro 用 SUBDIRS 管理子项目
  4. 可配置编译顺序、依赖关系

二、最外层总 pro(关键!)

MyBigProject.pro

qmake

复制代码
TEMPLATE = subdirs  # 必须是 subdirs

# 子项目目录
SUBDIRS += \
    CoreLib \
    UiTools \
    App

# 编译顺序 + 依赖(非常重要)
App.depends = CoreLib UiTools
UiTools.depends = CoreLib
  • SUBDIRS:列出所有子项目文件夹名
  • xxx.depends谁依赖谁 ,控制编译顺序例子:App 必须等 CoreLibUiTools 先编译完

三、子项目 pro 写法

1. 库项目 CoreLib.pro

qmake

复制代码
QT += core gui
TEMPLATE = lib      # 库
TARGET = CoreLib
DESTDIR = $$PWD/../bin  # 输出到统一目录

SOURCES += xxx.cpp
HEADERS += xxx.h

2. 主程序 App.pro

qmake

复制代码
QT += core gui widgets
TEMPLATE = app      # 可执行程序
TARGET = App
DESTDIR = $$PWD/../bin

# 引用库
INCLUDEPATH += $$PWD/../CoreLib
LIBS += -L$$PWD/../bin -lCoreLib

SOURCES += main.cpp

四、多层级嵌套(子目录里还有子目录)

支持无限层级,例如:

plaintext

复制代码
Project/
├── Project.pro
├── App/
├── Libraries/
│   ├── Libraries.pro
│   ├── Network/
│   └── Database/
└── Tools/

第二层 Libraries.pro

qmake

复制代码
TEMPLATE = subdirs
SUBDIRS += Network Database

Project.pro

qmake

复制代码
TEMPLATE = subdirs
SUBDIRS += Libraries App Tools

五、最常用高级配置

1. 统一输出目录(所有 exe、dll 放一起)

qmake

复制代码
# 在 总 pro 里配置
CONFIG(debug, debug|release) {
    DESTDIR = $$PWD/bin/debug
} else {
    DESTDIR = $$PWD/bin/release
}

2. 子项目共享配置

创建一个 common.pri 文件,所有子 pro 引用:

qmake

复制代码
include($$PWD/common.pri)

3. 指定只编译某些模块

qmake

复制代码
SUBDIRS += App CoreLib
CONFIG += ordered  # 按顺序编译

六、总结(面试 + 实战必背)

1. 多项目核心

  • 总工程TEMPLATE = subdirs
  • 子工程app / lib
  • SUBDIRS 管理子项目
  • xxx.depends 管理依赖顺序

2. 优点

  • 代码解耦
  • 模块化
  • 大型项目必备
  • 方便团队开发

3. 一句话面试答案

Qt 多项目使用 subdirs 模板,总 pro 管理子 pro,可配置编译顺序与依赖,实现模块化分层架构。

手把手教你:Qt Creator 中配置多项目子目录(subdirs)

我用最傻瓜、一步步、可直接照做 的方式教你,5 分钟搞定多层级多 pro 工程


一、最终要做成的项目结构(先看结果)

plaintext

复制代码
MyProject/         👈 总工程
├── MyProject.pro 👈 总 pro(subdirs)
├── App/          👈 主程序(exe)
│   └── App.pro
├── CoreLib/      👈 核心库(dll)
│   └── CoreLib.pro
└── Utils/        👈 工具库(dll)
    └── Utils.pro

二、第 1 步:创建「总工程」(最关键)

打开 Qt Creator → 新建项目

  1. 选择 Other ProjectSubdirs Project
  2. 项目名:MyProject
  3. 完成创建

自动生成的 MyProject.pro 内容:

qmake

复制代码
TEMPLATE = subdirs

SUBDIRS += \
           # 这里以后会自动/手动加入子项目

三、第 2 步:往总工程里添加「子项目」

右键点击总工程 → 新子项目

可以添加两种:

  1. App → 生成 exe
  2. Library → 生成 dll/lib

依次添加:

  • App(Application)
  • CoreLib(Library)
  • Utils(Library)

四、第 3 步:Qt Creator 会自动帮你配置好!

添加完后,你会发现:

MyProject.pro 自动变成:

qmake

复制代码
TEMPLATE = subdirs

SUBDIRS += \
    App \
    CoreLib \
    Utils

Qt Creator 全部自动配置,不用你手写路径!


五、第 4 步:配置「依赖关系」(必须做)

比如:

  • App 依赖 CoreLib 和 Utils
  • Utils 依赖 CoreLib

打开 MyProject.pro,在最后加:

qmake

复制代码
# 编译顺序:先编译被依赖的,再编译依赖的
App.depends = CoreLib Utils
Utils.depends = CoreLib

✅ 这样 Qt Creator 就会按正确顺序编译


六、第 5 步:让主程序 App 能使用库

打开 App.pro,添加库的路径:

qmake

复制代码
# 头文件路径
INCLUDEPATH += $$PWD/../CoreLib \
               $$PWD/../Utils

# 链接库
LIBS += -L$$PWD/../bin -lCoreLib -lUtils

七、第 6 步:统一输出目录(所有 exe、dll 放一起)

MyProject.pro 里加:

qmake

复制代码
# 所有子项目的输出目录都统一到 bin
CONFIG(debug, debug|release) {
    DESTDIR = $$PWD/bin/debug
} else {
    DESTDIR = $$PWD/bin/release
}

所有子项目会自动继承这个路径,不用每个都配!


八、最终效果(Qt Creator 里长这样)

plaintext

复制代码
MyProject
├─ App
├─ CoreLib
└─ Utils
  • 运行 → 自动编译所有子项目
  • 清理 → 全部清理
  • 调试、运行、跳转定义全部正常

九、超级重点总结(Qt Creator 多项目口诀)

  1. 总工程 = Subdirs Project
  2. 子项目 = 右键添加新子项目
  3. 编译顺序 = .depends
  4. 路径统一 = 总 pro 里写 DESTDIR
  5. Qt Creator 自动管理,不用手写复杂路径

具体案例可看下篇文章

相关推荐
郝学胜-神的一滴1 小时前
Qt 高级开发 020:水平布局手写代码实战
开发语言·c++·qt·系统架构·软件构建·用户界面
机器视觉知识推荐、就业指导15 小时前
Qt6 + QCustomPlot 实时曲线 Demo ,适合串口与上位机项目
qt
YY&DS16 小时前
Qt 嵌入 CEF 在 Linux 下必须设置 `QT_XCB_GL_INTEGRATION=xcb_egl才能加载网页
linux·开发语言·qt
秋田君20 小时前
Qt 5.12.8 下载与安装教程(附网盘资源)
开发语言·qt
郝学胜-神的一滴21 小时前
Qt 高级开发 019:从零定制登录窗口按钮、Logo 样式与交互悬浮效果
开发语言·c++·qt·程序人生·交互·用户界面
YY&DS1 天前
Qt Designer 自定义控件已提升后,如何修改提升类
开发语言·qt
爱吃生蚝的于勒1 天前
QT开发第二章——信号和槽
c语言·开发语言·c++·qt
宏笋1 天前
qss/css 样式中margin和padding的作用和区别
css·qt
雪的季节1 天前
qt实现线程方式有哪些
qt