QT中多项目管理问题,同时构建多个项目

文章介绍了如何在QT中进行多项目管理,特别是子目录项目的创建,包括应用程序和动态库子项目。通过设置TEMPLATE为subdirs来创建子项目,使用SUBDIRS指定构建顺序。同时,文章提到了添加CONFIG+ordered以确保所有子项目按顺序编译。动态库项目的配置,如DESTDIR和TARGET的设定,以及构建过程也进行了说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QT中多项目管理问题

0.前言

在编写项目的过程中,当项目比较多时,需要进行统一的管理,这时可以使用qt的子项目管理的方式。

参考:

  1. QT 创建多个子项目,以及调用:https://blog.csdn.net/chen1231985111/article/details/126251292

  2. QtCreator按顺序编译多个子项目:https://blog.csdn.net/weixin_41111116/article/details/126572024

  3. Qt多工程多目录的编译案例:https://www.shuzhiduo.com/A/VGzl69DO5b/

1.创建子目录项目(类似VS中的解决方案)

这个子项目类似于Visual Studio中解决方案一样的存在,用于管理多个其他子项目。点击文件->新建文件或项目->其他项目->子目录项目->Choose
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lNaGEL93-1677746891112)(.images/06-QT多项目管理/image-20230302155619084.png)]

之后下一步,选择需要的编译器,我这里只有mingw,若有msvc编译器也可选择msvc,不同的编译器生成的静态库文件后缀名不一样,mingw后缀为.amsvc后缀为.lib。我这里使用的是msvc编译器。

创建好的子项目目录如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5bMsmDkF-1677746891113)(.images/06-QT多项目管理/image-20230302155813613.png)]

2. 创建SubProjectSln的子项目

先创建两个应用程序子项目。

在项目名上右键,选择新子项目,或者是已经存在的项目Add Existing Projects...

创建两个应用程序项目(QT的窗体项目)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vFOMUnDl-1677746891113)(.images/06-QT多项目管理/image-20230302161020154.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-06OJWfCL-1677746891113)(.images/06-QT多项目管理/image-20230302161001505.png)]

这时项目的SubProjectSln.pro为:

# 指定编译后生成app 还是 lib, subdirs这里代表的是一个子目录项目
TEMPLATE = subdirs

# 添加子项目
SUBDIRS += \
    app_01 \
    app_02

这里最主要的就是这个项目文件

  • TEMPLATE不为subdirsSubProjectSln就不能创建子项目
  • SUBDIRS的项目顺序默认就是构建的顺序。

如果添加多个应用程序的项目(就是可执行的那种,有.exe,有main函数的那种),运行总的项目,只能有一个应用程序执行,默认执行的是先添加进来的项目。

3.添加动态库子项目

创建两个动态库子项目。

先右键项目名,选择新子项目,选择Library下的C++ Library

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YFykyRdA-1677746891114)(.images/06-QT多项目管理/image-20230302161813867.png)]

创建好之后目录结构为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iMiLoEIj-1677746891114)(.images/06-QT多项目管理/image-20230302162926641.png)]

在动态库子项目的.pro中添加一些相关的配置

# DESTDIR:指定最终文件生成的目录,相对路径为当前总项目的构建路径,每个子项目有一个以项目名命名的文件夹,
DESTDIR = ./bin
# TARGET:指定编译后生成的目标文件名称,如 xxx.dll,如果不写的话,默认以子项目名为名字
TARGET = lib_01_d.dll

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XOwvMlSX-1677746891114)(.images/06-QT多项目管理/image-20230302164645089.png)]

4.进行构建

SubProjectSln.pro中添加CONFIG+=ordered,必须添加这个才可以把所有的子项目都构建了,运行时只运行最先添加进来的有main函数的那个子项目。

# CONFIG选项要求各个子项目按顺序编译,子目录的编译顺序在SUBDIRS中指明
CONFIG+=ordered

直接在总项目上执行构建操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PLdNLwNc-1677746891114)(.images/06-QT多项目管理/image-20230302164458252.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ItU2INlK-1677746891115)(.images/06-QT多项目管理/image-20230302164414408.png)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值