使用ctk框架開發有大半年了,就實際應用上來說框架還比較可靠,但網上資料很少。而剛接觸時專案已經有了相當大的體量,與業務等其他邏輯混淆,現在單獨把ctk框架部分抽離出來做個總結分享,避免後來的人走彎路。
該系列介紹簡單的ctk框架構建的方法,具體架構可根據自身專案設計,開發環境為macos high sierra,qtcreator 5.10.0。
,然後使用cmake編譯出與系統版本相應的動態庫。
等等,cmake是什麼?cmake怎麼編譯?我竟然不知道cmake!!!
…………
……於是,我得到了xcode編譯出的libctkcore.dylib,以及libctkpluginframework.dylib(/*此處省略五百字*/)
ctkcore的標頭檔案包括:
github原始碼/libs/core/*.hctkpluginframeworkxcode編譯目錄/ctk-build/libs/core/ctkcoreexport.h;
的標頭檔案包括:
github原始碼/libs/pluginframework/*.h取出標頭檔案後,編譯出的動態庫就可以當普通動態庫使用載入了,pro裡面載入**為:github
原始碼/libs/pluginframework/service/*.h,
xcode編譯目錄/ctk-build/libs/pluginframework/ctkpluginframeworkexport.h。
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
intmain(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...