美文网首页
QtCreator插件框架学习01-目录结构

QtCreator插件框架学习01-目录结构

作者: MakerInChina | 来源:发表于2021-07-11 21:21 被阅读0次

    1、代码目录结构

    1.1、主要的文件结构如下:
    _  
    │
    │   MonkeyQDK.pri
    │   MonkeyQDK.pro
    ├───build
    │   ├───bin
    │   │   │   extensionsystem.dll
    │   │   │   MonkayQDK.exe
    │   │   │   utils.dll
    │   │   │   
    │   │   └───plugins
    │   │           coreplugin.dll
    │   │           
    │   └───libs
    │           coreplugin.dll
    │           extensionsystem.dll
    │           libcoreplugin.a
    │           libextensionsystem.a
    │           libutils.a
    │           utils.dll
    │           
    └───src
        │   libs.pri
        │   plugins.pri
        │   src.pro
        │   
        ├───app
        │       app.pro
        │       main.cpp
        │       
        ├───libs
        │   │   libs.pro
        │   │       
        │   ├───extensionsystem
        │   │       extensionsystem.pro
        │   │       
        │   └───utils
        │               
        └───plugins
            │   plugins.pro
            │   
            └───coreplugin
                    coreplugin.pro
    
    • MonkeyQDK.pro 文件是项目主文件
    • MonkeyQDK.pri 文件是辅助定义输出目录、库路径等变量
    1.2、build目录

    build 目录存放编译生成的库、插件和执行程序,包含bin文件夹和libs文件夹:

    • bin 文件存放可执行程序和它执行时要用到的库及插件的dll动态链接库文件,用于最后的打包
    • libs 文件存放插件和库所生成的静态链接库 .a 文件,用于程序编译
    1.3 src代码文件目录

    src 目录存放代码,包含app、libs、plugins文件夹:

    • app 为主函数main.cpp的子目录项目
    • libs 为插件框架和常用工具的子目录项目
    • plugins 存放各种插件子项目

    2、项目和子项目

    2.1、 主项目MonkeyQDK.pro

    该文件描述下级src子目录项目,内容如下:

    TEMPLATE = subdirs
    
    CONFIG += ordered
    
    SUBDIRS += \
        src
    
    2.2、MonkeyMDK.pri 文件

    该文件定义项目常用的变量,如输出路径、库路径等,是项目公共的,可以在其他子目录项目进行包含使用,内容如下:

    CONFIG += c++14
    
    # app.exe and lib dll path
    APP_OUT_PATH = $ $PWD/build/bin
    
    # lib*.a path
    APP_LIBS_PATH = $ $PWD/build/libs
    
    # plugin dll path
    APP_PLUGIN_PATH =  $ $PWD/build/bin/plugins
    
    #lib include
    INCLUDEPATH += $ $PWD/src/libs
    DEPENDPATH  += $ $PWD/src/libs
    

    上面变量定义了程序 .exe 及它要用的动态链接库 .dll 文件路径、编译时候的静态库 .a 文件路径、插件 .dll 文件路径路径;这里的 $PWD 表示 pro 或 pri 文件所在目录,这里即 MonkeyMDK.pri 文件所在的当前目录;

    • INCLUDEPATH 定义了编译要用的头文件目录
    • DEPENDPATH 用于添加qmake文件依赖
    2.3、src 子目录项目

    这里存放的代码源文件的项目,src.pro 文件如下:

    TEMPLATE = subdirs
    
    CONFIG += ordered
    
    SUBDIRS += \
        libs \
        plugins \
        app \
    

    包含库libs、插件plugins、主程序app项目。

    • libs.pri 中定义了库输出等路径:
    include(../MonkeyQDK.pri)
    
    TEMPLATE = lib
    
    DLLDESTDIR = $ $APP_OUT_PATH
    
    DESTDIR = $ $APP_LIBS_PATH
    
    LIBS += -L$ $DESTDIR
    

    include 包含了之前定义的pri文件,因为要用到输出路径的变量;其中 DLLDESTDIR 定义要把库 dll 文件拷贝的路径,DESTDIR 则指示库生成的 .a 和 .dll 文件输出路径,LIBS 标识项目要链接的库路径。

    • plugins.pri 中定义插件生成的路径:
    include(../MonkeyQDK.pri)
    
    TEMPLATE = lib
    
    DLLDESTDIR = $ $APP_OUT_PATH/plugins
    
    DESTDIR = $ $APP_LIBS_PATH
    
    LIBS += -L$ $DESTDIR
    

    DLLDESTDIR 标识插件的目录,这里标识最后生成时把插件放置到exe所在目录的plugins文件夹下。

    2.4、主程序 app子项目

    这个子项目为主程序main的项目,项目pro文件如下:

    include(../../MonkeyQDK.pri)
    
    QT += core gui widgets
    
    TEMPLATE = app
    
    TARGET = MonkayQDK
    
    SOURCES += \
        main.cpp
    
    DESTDIR = $ $APP_OUT_PATH
    
    • QT += 标识要用到的 Qt 库;
    • TARGET 定义生成的名字,这里即为 exe 文件名;
    • SOURCES 为源文件;
    • DESTDIR 指定输出目录,这里为 exe 路径,APP_OUT_PATH引用了 pri 文件中定义的路径变量
    2.5、库libs子目录项目

    这个子项目放置要用的库项目,如核心的插件框架库extensionsystem、常用工具库utils等,pro文件内容如下:

    TEMPLATE = subdirs
    
    CONFIG += ordered
    
    SUBDIRS += \
        utils \
        extensionsystem
    
    • extensionsystem 子项目就是要用到的插件框架项目,包含了插件接口、插件管理、加载等功能;
    • utils 子项目则存放常用的工具,如算法、json、字符串处理等;
    2.6、插件plugins子目录项目

    这个子目录项目存放核心插件 coreplugin和用户添加的其他各种插件,这样和app一起组成插件形式的程序,pro文件如下:

    TEMPLATE = subdirsSUBDIRS += \    coreplugin
    
    • coreplugin 就是核心插件项目,一般的主界面开始加载就在这里调用。

    相关文章

      网友评论

          本文标题:QtCreator插件框架学习01-目录结构

          本文链接:https://www.haomeiwen.com/subject/xvklpltx.html