当前位置:
k262电脑网 >
网络知识 > 发布时间:2025-06-15 09:09 文章来源于网友投稿,仅供参考!
Qt Creator按顺序编译多个子项目
0. 环境
Qt5.3.2 mingw482_32
1. 创建子项目
这个子项目类似于Visual Studio
中解决方案一样的存在,用于管理多个其他子项目。点击文件
>新建文件或项目
>其他项目
>子项目项目
>Choose
:
之后下一步,选择需要的编译器,我这里只有mingw,若有msvc编译器也可选择msvc,不同的编译器生成的静态库文件后缀名不一样,mingw后缀为.a,msvc后缀为.lib。
2. 创建SubProjectSln的子项目
- UiApp
- Dll
- Lib
在SubProjectSln项目上新建子项目,操作如下,其他类同:
创建完成后项目目录结构如下:
其中SubProjectSln
的项目文件内容如下:
1 TEMPLATE = subdirs
2
3 SUBDIRS += \
4 UiApp \
5 Dll \
6 Lib
这里最主要的就是这个项目文件
TEMPLATE
不为subdirs
则SubProjectSln
就不能创建子项目
SUBDIRS
的项目顺序默认就是构建的顺序。
3. 三个项目内容
Dll
依赖Lib
,UiApp
依赖Dll
3.1 Dll
Dll
主要内容如下:
1 #include "dll.h"
2 #include "../lib/lib.h"
3
4 Dll::Dll()
5
8
9 QString Dll::getDllName()
10
13
14 QString Dll::getLibName()
15
Dll
项目文件如下:
1 #
2 #
3 # Project created by QtCreator 20220828T16:51:01
4 #
5 #
6
7 QT = gui
8
9 TARGET = Dll
10 TEMPLATE = lib
11
12 DEFINES += DLL_LIBRARY
13
14 CONFIG(debug,debug|release) else
21
22 SOURCES += dllpp
23
24 HEADERS += dll.h\
25 dll_global.h
26
27 unix
3.2 Lib
Lib
主要内容如下:
1 #include "lib.h"
2
3
4 Lib::Lib()
5
7
8 QString Lib::getName()
9
Lib
项目文件内容如下:
1 #
2 #
3 # Project created by QtCreator 20220828T16:51:22
4 #
5 #
6
7 QT = gui
8
9 TARGET = Lib
10 TEMPLATE = lib
11 CONFIG += staticlib
12
13 CONFIG(debug,debug|release) else
18
19 SOURCES += libpp
20
21 HEADERS += lib.h
22 unix
3.3 UiApp
UiApp
界面如下:
UiApp
界面代码如下:
1 #include "widget.h"
2 #include "ui_widget.h"
3 #include "../Dll/dll.h"
4
5 Widget::Widget(QWidget *parent) :
6 QWidget(parent),
7 ui(new Ui::Widget)
8
14
15 Widget::~Widget()
16
UiApp
项目文件如下:
1 #
2 #
3 # Project created by QtCreator 20220828T16:50:24
4 #
5 #
6
7 QT += core gui
8
9 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
10
11 TARGET = UiApp
12 TEMPLATE = app
13
14 CONFIG(debug,debug|release) else
21
22
23 SOURCES += mainpp\
24 widgetpp
25
26 HEADERS += widget.h
27
28 FORMS += widget.ui
4. 构建
以如下顺序构建:
这里的错误就是因为UiApp
依赖了Dll
,所以构建的顺序颠倒了。
修改SubProjectSln
项目文件如下:
1 TEMPLATE = subdirs
2
3 SUBDIRS += \
4 Lib \
5 Dll \
6 UiApp
即可构建成功。
我网上查资料有的说要在SubProjectSln
项目文件中加CONFIG += ordered
,使SUBDIRS
按照顺序构建,但是我测试下来不加CONFIG += ordered
,也是按照顺序构建的,猜测可能是版本的原因~~~
运行结果如下:
上一篇:Qt Json的使用教程
下一篇:OpenSeadragon 实战系列文档翻译
Qt