QtCreator插件框架學(xué)習(xí)01-目錄結(jié)構(gòu)

1阅虫、代碼目錄結(jié)構(gòu)

1.1、主要的文件結(jié)構(gòu)如下:
_  
│
│   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 目錄存放編譯生成的庫、插件和執(zhí)行程序窝革,包含bin文件夾和libs文件夾:

  • bin 文件存放可執(zhí)行程序和它執(zhí)行時要用到的庫及插件的dll動態(tài)鏈接庫文件购城,用于最后的打包
  • libs 文件存放插件和庫所生成的靜態(tài)鏈接庫 .a 文件,用于程序編譯
1.3 src代碼文件目錄

src 目錄存放代碼虐译,包含app瘪板、libs、plugins文件夾:

  • app 為主函數(shù)main.cpp的子目錄項目
  • libs 為插件框架和常用工具的子目錄項目
  • plugins 存放各種插件子項目

2漆诽、項目和子項目

2.1侮攀、 主項目MonkeyQDK.pro

該文件描述下級src子目錄項目锣枝,內(nèi)容如下:

TEMPLATE = subdirs

CONFIG += ordered

SUBDIRS += \
    src
2.2薄坏、MonkeyMDK.pri 文件

該文件定義項目常用的變量趋厉,如輸出路徑、庫路徑等颤殴,是項目公共的觅廓,可以在其他子目錄項目進(jìn)行包含使用,內(nèi)容如下:

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 及它要用的動態(tài)鏈接庫 .dll 文件路徑涵但、編譯時候的靜態(tài)庫 .a 文件路徑杈绸、插件 .dll 文件路徑路徑;這里的 $PWD 表示 pro 或 pri 文件所在目錄矮瘟,這里即 MonkeyMDK.pri 文件所在的當(dāng)前目錄瞳脓;

  • 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 標(biāo)識項目要鏈接的庫路徑。

  • plugins.pri 中定義插件生成的路徑:
include(../MonkeyQDK.pri)

TEMPLATE = lib

DLLDESTDIR = $ $APP_OUT_PATH/plugins

DESTDIR = $ $APP_LIBS_PATH

LIBS += -L$ $DESTDIR

DLLDESTDIR 標(biāo)識插件的目錄祝峻,這里標(biāo)識最后生成時把插件放置到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 += 標(biāo)識要用到的 Qt 庫酬姆;
  • TARGET 定義生成的名字,這里即為 exe 文件名奥溺;
  • SOURCES 為源文件辞色;
  • DESTDIR 指定輸出目錄,這里為 exe 路徑浮定,APP_OUT_PATH引用了 pri 文件中定義的路徑變量
2.5淫僻、庫libs子目錄項目

這個子項目放置要用的庫項目诱篷,如核心的插件框架庫extensionsystem、常用工具庫utils等雳灵,pro文件內(nèi)容如下:

TEMPLATE = subdirs

CONFIG += ordered

SUBDIRS += \
    utils \
    extensionsystem
  • extensionsystem 子項目就是要用到的插件框架項目,包含了插件接口闸盔、插件管理悯辙、加載等功能;
  • utils 子項目則存放常用的工具迎吵,如算法躲撰、json、字符串處理等击费;
2.6拢蛋、插件plugins子目錄項目

這個子目錄項目存放核心插件 coreplugin和用戶添加的其他各種插件,這樣和app一起組成插件形式的程序蔫巩,pro文件如下:

TEMPLATE = subdirsSUBDIRS += \    coreplugin
  • coreplugin 就是核心插件項目谆棱,一般的主界面開始加載就在這里調(diào)用。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末圆仔,一起剝皮案震驚了整個濱河市垃瞧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坪郭,老刑警劉巖个从,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異歪沃,居然都是意外死亡嗦锐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門沪曙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奕污,“玉大人,你說我怎么就攤上這事珊蟀【罩担” “怎么了?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵育灸,是天一觀的道長腻窒。 經(jīng)常有香客問我,道長磅崭,這世上最難降的妖魔是什么儿子? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮砸喻,結(jié)果婚禮上柔逼,老公的妹妹穿的比我還像新娘蒋譬。我一直安慰自己,他們只是感情好愉适,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布犯助。 她就那樣靜靜地躺著,像睡著了一般维咸。 火紅的嫁衣襯著肌膚如雪剂买。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天癌蓖,我揣著相機(jī)與錄音瞬哼,去河邊找鬼。 笑死租副,一個胖子當(dāng)著我的面吹牛坐慰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播用僧,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼结胀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了永毅?” 一聲冷哼從身側(cè)響起把跨,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沼死,沒想到半個月后着逐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡意蛀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年耸别,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片县钥。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡秀姐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出若贮,到底是詐尸還是另有隱情省有,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布谴麦,位于F島的核電站蠢沿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏匾效。R本人自食惡果不足惜舷蟀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧野宜,春花似錦扫步、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旬牲,卻和暖如春仿粹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背原茅。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留堕仔,地道東北人擂橘。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像摩骨,于是被迫代替她去往敵國和親通贞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容