Qt Creator按顺序编译多个子项目


0. 环境

Qt5.3.2 mingw482_32

1. 创建子项目

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

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

2. 创建SubProjectSln的子项目

  1. UiApp
  2. Dll
  3. Lib

在SubProjectSln项目上新建子项目,操作如下,其他类同:

创建完成后项目目录结构如下:

其中SubProjectSln的项目文件内容如下:

1 TEMPLATE = subdirs 2 3 SUBDIRS += \ 4 UiApp \ 5 Dll \ 6 Lib

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

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

3. 三个项目内容

Dll依赖LibUiApp依赖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
Copyright © 2002-2019 k262电脑网 www.k262.cn 皖ICP备2020016292号
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!QQ:251442993 热门搜索 网站地图