ctk框架搭建 一 ctk框架外掛程式載入與專案結構

2021-08-15 09:21:26 字數 2004 閱讀 1429

使用ctk框架開發有大半年了,就實際應用上來說框架還比較可靠,但網上資料很少。而剛接觸時專案已經有了相當大的體量,與業務等其他邏輯混淆,現在單獨把ctk框架部分抽離出來做個總結分享,避免後來的人走彎路。

該系列介紹簡單的ctk框架構建的方法,具體架構可根據自身專案設計,開發環境為macos high sierra,qtcreator 5.10.0。

,然後使用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

#include

"ctkpluginframeworkfactory.h"

#include

"ctkpluginframework.h"

#include

"ctkpluginexception.h"

#include

int

main(int

argc,

char

*argv)

catch(const

ctkpluginexception&

e)

return

a.exec();

}

沒有報錯的話及表示外掛程式載入成功!

其中qsharedpointer

framework這個物件比較有意思,既可以作為物件也可以作為物件指標,但要作為外掛程式框架使用必須要用指標方法呼叫,所以**裡使用「->」。

關於剛開始提到的cmake,由於該系列還有幾章,再講cmake容易扯遠,如果有必要的話以後單獨開一篇講。

cmake編譯:

ctk框架搭建 二 ctk外掛程式的介面處理及啟用

ctk框架由乙個乙個可分離的外掛程式組成,框架對外掛程式識別有一定要求,目前網上很多一整塊扔出來對新人不太友好,博主這裡講解是盡量拆。單個外掛程式最基本的格式要求分成activator,qrc檔案,以及manifest.mf,我們以生成乙個主介面模組mainwindow為例。右鍵專案選擇新建子專案 ...

CTK外掛程式框架學習6 註冊介面呼叫

ctkservicereference csref pcontex getservicereference ctkeventadmin eventadmin pcontex getservice csref ctkdictionary cdiry cdiry.insert plug info qst...

CTK 介面 外掛程式 服務

0 概念 介面就是純虛函式類,也就是最終的服務的前身 外掛程式就是實現這個介面類的實現類,所以理論上有多少個實現類就有多少個外掛程式。注意每個外掛程式都有自己的註冊器activator 服務就是根據介面的例項,每生成乙個服務就會呼叫一次註冊器的start。一句話總結就是 把介面當做類,服務是根據類n...