【Qt4 设计师自定义控件】自动化打包(非常Elegance!)

前言

之前写了一篇【Qt4 设计师自定义控件】项目创建➕使用后,觉得还是不够优雅,如果我要生产很多个插件怎么办,每次都要搞一堆重复性的东西,于是我又研究了如何自动化实现这些重复性的工作。

目标

用Qt写一个自动打包程序,实现一键打包 ( ๑ • ˋ ㅂ • ˊ ) و✧ (๑•̀ㅂ•́)و✧ (ˋˊ)و✧(充满 power!)

准备工作

要实现这个功能,需要先了解一下如何手动打包多个插件的多种编译版本。

我们可以提前准备好下面这种结构的文件目录(你可以自己改,但后面的路径一定要写对)

对于每一个插件,我们都配置一个单独的.pri文件,最后把所有.pri文件再统一配置给allPri.pri,这样我们每次创建新项目的时候,只需要引入这个allPri.pri文件即可!

现在我们来看看这些配置文件.pri该怎么写

  • 对于每一个插件自己的.pri
win32 {
	# 这三个变量的取值看你文件夹创建的目录,如果你和上面的图片一样,这样写就ok
    BasePath = $$PWD/lib
    MSVCKit = MSVC2019_64
    MinGWKit = MinGW_64

    contains(QMAKE_COMPILER, msvc) {
    	# MSVC编译器
        # 这里的路径一定要和你自己创建的目录一致
        isDebugBuild: LIBS += -L$${BasePath}/$${MSVCKit}/debug/ -lyourplugind # 只有msvc的debug是d结尾
        else:         LIBS += -L$${BasePath}/$${MSVCKit}/release/ -lyourplugin
    }
    else {
    	# 其他编译器,默认MinGW
        # 这里的路径一定要和你自己创建的目录一致
        isDebugBuild: LIBS += -L$${BasePath}/$${MinGWKit}/debug/ -lyourplugin
        else:         LIBS += -L$${BasePath}/$${MinGWKit}/release/ -lyourplugin
    }
}
# 这里的路径一定要和你自己创建的目录一致
INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include
  • 对于allPri.pri
# 使用相对路径,所以allPri.pri的位置要放在这些插件的上级目录中,按照图来就不会错
include(Plugin1/Plugin1.pri)
include(Plugin2/Plugin2.pri)
include(Plugin3/Plugin3.pri)
include(Plugin4/Plugin4.pri)
include(Plugin5/Plugin5.pri)
# ...

现在你已经写完配置了,那么创建的项目如何引用这些插件?答案是在你的pro文件中引入allPri.pri

# Project.pro
# 你喜欢把PluginPack放哪里就放哪里,把绝对路径引入就好了,这个放在pro最后一行就ok。
include(D:/software/Qt/Qt6.5.3/PluginPack/allPri.pri)

当然,最后别忘了把每个插件的.dll文件拷贝到designer文件夹中,不然都没法显示。

实现

恭喜你,现在你已经学会了如何手动打包。
但是每次我们都要 创建文件夹拷贝依赖书写pri文件
这三步操作下来,属实有点烦人。。。

现在我们就要设计一个可以一键打包的工具来实现上面的三步操作!!!

首先我们要确定一件事:哪些是固定的(不需要我们输入)?,哪些是变化的(需要我们告诉exe)?

不变:

  • 目录结构(创建文件夹)
  • pri文件书写框架(书写.pri文件)
  • 依赖生成位置(拷贝依赖)
  • 依赖拷贝位置(拷贝依赖)

变化:

  • 目录名称(创建文件夹)
  • 插件名称(书写.pri文件)
  • 依赖名称(拷贝依赖)

这些工作都准备好之后,我们就可以写代码了,这里我直接展示成品,想要源码的可以点击这里;

请添加图片描述

我们需要输入四个东西:
分别是

  • 项目路径(比较固定,前缀基本不会变)
  • Qt Creator的designer文件夹路径(完全固定,你可以省略这一项,把他写死)
  • 你的插件名称,建议和项目同名(不固定)
  • 你的打包位置(比较固定,只要你不移动它,也可以写死)

最后的最后,你在使用的时候,别忘了在你的.pro文件在引入allPri.pri,直接使用绝对路径就好了。

include(D:/software/Qt/Qt6.5.3/PluginPack/allPri.pri)

集成到Qt Creator

在此之前,你需要先把工具打包出来。

最后我们可以把这个小工具集成到我们的Qt Creator中,操作如下:
在这里插入图片描述
在这里插入图片描述
最后点击【应用/确定】

在这里插入图片描述

注意:我们在使用打包工具时,有可能设计到操作被占用的文件(一般是designer的dll文件被占用),所以打包工具还需要一个提示关闭Qt的功能。

效果:(自动关闭Qt → 文件不再被占用 → 开始打包 → 打包完成 → 自动重启Qt)
请添加图片描述
如果是新插件,还需要提醒用户是否重启Qt以便加载插件,这里就不展示了。

完结撒花🌼🌼🌼

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值