星標/置頂 公眾號👇,硬核文章第一時間送達!
幾年前,我曾寫過一些插件相關的文章,其中最成體系的當屬 CTK 系列,一共 18 個章節,從 0 到 1 講述了模塊化編程在 C++/Qt 中的實際應用。
很多小夥伴曾學過這個框架/庫,但真正用起來的沒有幾個,究其原因有如下幾個:
一句話:很難學!的確是這樣,因為我也經歷過這個過程,所有的這些經驗積累,都是我之前從 OSGI 那裡一步步摸索,總結而來的!
所以如果要學會它,需要花費不少精力,當然了,同時你的內功也會大大提升!想想看,如果大家都學會了,怎麼體現你的優秀!
話不多說,無論是想研究 CTK 還是其他插件框架,建議先從 Qt Plugin 開始,然後是 QTC 的 ExtensionSystem(官方術語,你也可以認為是插件系統),下面就來扒一扒這個 ExtensionSystem 的源碼。
QTC 源碼
如果要推薦 Qt 項目,我一定首選 QTC:https://github.com/qt-creator/qt-creator,Qt 官方開發的 IDE、良好的組織結構、優秀的代碼設計、以及編碼風格,我想沒有比這個更值得深入研究的了!
雖然 QTC 中的代碼很多,但要剝離插件框架其實也不難。進入 QTC 源碼,找到 ExtensionSystem 就可以了,它是一個庫,自身又依賴於 utils 庫。所以如果想在自己的項目中使用 QTC 的插件框架,必須得同時把這兩個都扒下來!
utils 裡面是一些算法、性能診斷相關的功能,如果不想要它,只想要 ExtensionSystem,可以把這部分裁減掉,再魔改一下!
編寫 QES
為了介紹和使用 ExtensionSystem,我編寫了一個簡單的程序,名為 QES(Qt ExtensionSystem 的縮寫)。
這裡面有插件的整體加載流程,以及兩個測試插件 - coreplugin 和 helloworld。通過這個示例程序,你可以很容易地將 ExtensionSystem 移植到自己的項目中,並且能夠快速地編寫自己的插件。
如果對 QES 感興趣,想學習源碼,請訪問我的 github:https://github.com/Waleon/QES,不要忘了給個 Star 哦!
關注公眾號「高效程式設計師」👇,一起優秀!
回復 「入群」 進技術交流群,回復 「1024」 獲取海量學習資源。一個字:肝