QT中多项目管理问题
0.前言
在编写项目的过程中,当项目比较多时,需要进行统一的管理,这时可以使用qt的子项目管理的方式。
参考:
-
QT 创建多个子项目,以及调用:https://blog.csdn.net/chen1231985111/article/details/126251292
-
QtCreator按顺序编译多个子项目:https://blog.csdn.net/weixin_41111116/article/details/126572024
-
Qt多工程多目录的编译案例:https://www.shuzhiduo.com/A/VGzl69DO5b/
1.创建子目录项目(类似VS中的解决方案)
这个子项目类似于Visual Studio
中解决方案一样的存在,用于管理多个其他子项目。点击文件
->新建文件或项目
->其他项目
->子目录项目
->Choose
:
之后下一步
,选择需要的编译器,我这里只有mingw
,若有msvc
编译器也可选择msvc
,不同的编译器生成的静态库文件后缀名不一样,mingw
后缀为.a
,msvc
后缀为.lib
。我这里使用的是msvc
编译器。
创建好的子项目目录
如下图:
2. 创建SubProjectSln的子项目
先创建两个应用程序子项目。
在项目名上右键,选择新子项目
,或者是已经存在的项目Add Existing Projects...
创建两个应用程序项目(QT的窗体项目)
这时项目的SubProjectSln.pro
为:
# 指定编译后生成app 还是 lib, subdirs这里代表的是一个子目录项目
TEMPLATE = subdirs
# 添加子项目
SUBDIRS += \
app_01 \
app_02
这里最主要的就是这个项目文件
TEMPLATE
不为subdirs
则SubProjectSln
就不能创建子项目SUBDIRS
的项目顺序默认就是构建的顺序。
如果添加多个应用程序的项目(就是可执行的那种,有.exe
,有main函数的那种),运行总的项目,只能有一个应用程序执行,默认执行的是先添加
进来的项目。
3.添加动态库子项目
创建两个动态库子项目。
先右键项目名,选择新子项目
,选择Library
下的C++ Library
创建好之后目录结构为:
在动态库子项目的.pro
中添加一些相关的配置
# DESTDIR:指定最终文件生成的目录,相对路径为当前总项目的构建路径,每个子项目有一个以项目名命名的文件夹,
DESTDIR = ./bin
# TARGET:指定编译后生成的目标文件名称,如 xxx.dll,如果不写的话,默认以子项目名为名字
TARGET = lib_01_d.dll
4.进行构建
在SubProjectSln.pro
中添加CONFIG+=ordered
,必须添加这个才可以把所有的子项目都构建了,运行时只运行最先添加进来的有main函数的那个子项目。
# CONFIG选项要求各个子项目按顺序编译,子目录的编译顺序在SUBDIRS中指明
CONFIG+=ordered
直接在总项目上执行构建操作