ctk框架搭建(一) ctk框架插件加载与项目结构

ctk框架搭建(一) ctk框架插件加载与项目结构序 使用CTK框架开发有大半年了,就实际应用上来说框架还比较可靠,但网上资料很少。而刚接触时项目已经有了相当大的体量,与业务等其他逻辑混淆,现在单独把ctk框架部分抽离出来做个总结分享,避免后来的人走弯路。 该系列介绍简单的ctk框架构建的方法,具体架构可根据自身项目设计,开发环境为macOSHighSierra,QtCreator5.10.0。ctk框架插件    CTK源码可以从Gi…

大家好,又见面了,我是你们的朋友全栈君。

序

 使用CTK框架开发有大半年了,就实际应用上来说框架还比较可靠,但网上资料很少。而刚接触时项目已经有了相当大的体量,与业务等其他逻辑混淆,现在单独把ctk框架部分抽离出来做个总结分享,避免后来的人走弯路。

 该系列介绍简单的ctk框架构建的方法,具体架构可根据自身项目设计,开发环境为macOS High Sierra,QtCreator 5.10.0。

ctk框架插件

     CTK源码可以从GitHub上下载,地址 https://github.com/commontk/CTK,然后使用cmake编译出与系统版本相应的动态库。

等等,cmake是什么?cmake怎么编译?我竟然不知道cmake!!!

……

……

……

于是,我得到了Xcode编译出的libCTKCore.dylib,以及libCTKPluginFramework.dylib(/*此处省略五百字*/)

CTKCore的头文件包括:

GitHub源码/Libs/Core/*.h     Xcode编译目录/ctk-build/Libs/Core/ctkCoreExport.h;

CTKPluginFramework的头文件包括:

GitHub源码/Libs/PluginFramework/*.h     GitHub源码/Libs/PluginFramework/service/*.h,     Xcode编译目录/ctk-build/Libs/PluginFramework/ctkPluginFrameworkExport.h。

取出头文件后,编译出的动态库就可以当普通动态库使用加载了,pro里面加载代码为:

macx: LIBS += -L$$PWD/../libs/ -lCTKCore.0.1.0
macx: LIBS += -L$$PWD/../libs/ -lCTKPluginFramework.0.1.0
INCLUDEPATH += $$PWD/../inclues \
        += $$PWD/../includes/core \
        += $$PWD/../includes/pluginFramework
INCLUDEPATH += $$PWD/../libs
DEPENDPATH += $$PWD/../libs

每个插件都要加载。

项目结构

    由于每一个插件都要建一个子项目,本项目刚开始创建时在QtCreator中选择新建-其他项目-子目录项目,新建项目名称为ctkExample,然后建立主程序入口项目,这里建立一个控制台项目,取名叫console。

更改项目输出路径:console.pro

DESTDIR = $$PWD/../bin

主函数中加载插件,启动框架:main.cpp

#include <QCoreApplication>
#include "ctkPluginFrameworkFactory.h"
#include "ctkPluginFramework.h"
#include "ctkPluginException.h"
#include <QDebug>
int main(int argc, char *argv[])
{
 
 
    QCoreApplication a(argc, argv);
    a.setApplicationName("ctkExample");//给框架创建名称,Linux下没有这步会报错
    ctkPluginFrameworkFactory factory;//插件工厂类
    QSharedPointer<ctkPluginFramework> framework;
    framework = factory.getFramework();
    try{
 
 
        framework->init();
        framework->start();
    }
    catch(const ctkPluginException& e){
 
 
        qDebug() << "framework init fail";
        qDebug() << e.message() << e.getType();
    }
    return a.exec();
}

没有报错的话及表示插件加载成功!

    其中QSharedPointer<ctkPluginFramework> framework这个对象比较有意思,既可以作为对象也可以作为对象指针,但要作为插件框架使用必须要用指针方法调用,所以代码里使用“->”。

小结

刚开始写技术博客,不知道是啰嗦了还是部分地方没讲清楚,大家将就看,有不懂的地方欢迎留言(如果有人看的话,远目~)

关于刚开始提到的cmake,由于该系列还有几章,再讲cmake容易扯远,如果有必要的话以后单独开一篇讲。

参考文献

cmake编译:http://blog.csdn.net/ji2013/article/details/12370745

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135091.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • qt之模仿随机抽奖

    qt之模仿随机抽奖

    2022年8月30日
  • 搜空白符号_excel筛选空白格

    搜空白符号_excel筛选空白格这是网络上很多人都在找的空白格符号,游戏ID、文本编辑、设计等等,这些是确实可用的,如果不小心帮到了你,点赞评论支持。➧ 空白格符号:【】【】【 】【】➧ 小空白格符号:【】【⠀】【⠀】【⠀】【】➧ 极小空白格符号:【⁡】【⁡】 注:【括号中】是有字符的带着括号复制,把括号删除即可下面是一些其他符号:▲÷↑↓◆◇⊙■□△▽─│♂♀▼≈←→◎☉★☆⊿※━┃ツΣ卐√↖↗●Θ◤◥︻〖〗┄┆℃℉°¢€£∞★×↙↘○⊕◣◢︼【】┅┇〓▂▃▄▅▆▇█▉▊▋▌▍▎▏の┈┊①②③④⑤⑥⑦⑧⑨⑩

    2022年10月5日
  • 2020熔化焊接与热切割作业模拟考试_熔化焊接与热切割考试题与答案

    2020熔化焊接与热切割作业模拟考试_熔化焊接与热切割考试题与答案题库来源:安全生产模拟考试一点通公众号小程序2022年熔化焊接与热切割考试题系熔化焊接与热切割判断题上机考试练习题!2022熔化焊接与热切割考试题库及模拟考试根据熔化焊接与热切割新版考试题库。熔化焊接与热切割全部考试题库随时根据安全生产模拟考试一点通上模拟考试。1、【单选题】CO2气体保护内圆孔自动立堆焊机不能用于修复()。(C)A、机车摇连杆孔B、机车车轮轮毂孔C、火车车轮轮缘2、【单选题】不属于低真空电子束焊的应用的是()。(B)A、变速箱B、导弹…

    2022年9月4日
  • 【SpringBoot】19、SpringBoot中实现启动任务

    【SpringBoot】19、SpringBoot中实现启动任务我们在项目中会用到项目启动任务,即项目在启动的时候需要做的一些事,例如:数据初始化、获取第三方数据等等,那么如何在SpringBoot中实现启动任务,一起来看看吧SpringBoot中提供了两种项目启动方案,CommandLineRunner和ApplicationRunner一、CommandLineRunner使用CommandLineRunner,需要自定义一个类区实现CommandLineRunner接口,例如:importorg.springframework.boot.

    2022年9月26日
  • python字符串内置方法[通俗易懂]

    字符串的内置方法(部分)

    2022年3月29日
  • docker端口映射不起作用的解决办法有哪些_docker 端口映射

    docker端口映射不起作用的解决办法有哪些_docker 端口映射今天初学Docker和宿主机的端口映射,根据网上的博客进行了操作。执行命令:dockerrun-d-p50070:50070-p8088:8088–namehadoop1ubuntu:java但是发现命令可以正常执行,但端口映射就是不成功,PORTS一直为空,就像下图这样:然后输入命令dockerportc526发现输出也为空这就奇了怪了…

    2022年10月17日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号