QT学习笔记-QT多项目系统中如何指定各项目的编译顺序

QT学习笔记-QT多项目系统中如何指定各项目的编译顺序

背景

为了更好的复用程序功能以及更优雅的管理程序,有经验的程序员通常要对程序进行分层和模块化设计。在QT/C++这个工具中同样可以通过创建子项目的方式对程序进行模块化,在这种组织方式中为了更好的复用代码,往往会把多个地方使用的程序放入一个共享库中,然后在其他库或程序中进行引用。如果我们不指定各项目的编译顺序,很有可能出现在编译某个项目时,而这个项目引用(依赖)的某个项目还未被编译,这时就会出现编译错误,从而导致编译失败。

环境

QT版本:QT5.15.2
操作系统:windows 10 专业版

解决思路

那么如何解决这个问题呢?最好的方式就是能够先编译被引用(依赖)的项目,那么这个编译顺序在QT中是在哪指定的呢?答案是.pro文件中。

具体操作

1、首先看一个QT的多项目(子项目)的.pro文件内容,如下:

# 以下模版说明当前项目是有子项目的项目
TEMPLATE = subdirs
# 当前项目包含的子项目
SUBDIRS += \
    a3lib \
    common \
    plc \
    test

我实际的引用(依赖)关系是
test 引用 plc(就是说在编译test之前需要先编译plc才行)
plc 引用 common(就是说在编译plc之前需要先编译common才行)
common 引用 a3lib(就是说在编译common之前需要先编译a3lib才行)

默认各子项目(a3lib、common、plc、test)的编译是没有顺序的。

2、要想让QT按上面的顺序进行编译,只需在.pro文件中增加CONFIG += ordered就可以。

CONFIG += ordered

如下:

# 以下模版说明当前项目是有子项目的项目
TEMPLATE = subdirs
# 指定工程的编译顺序
CONFIG += ordered
# 当前项目包含的子项目
SUBDIRS += \
    a3lib \
    common \
    plc \
    test

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zlbdmm/article/details/129422288