xmake 新增对 Qt 编译环境支持,用自己最喜爱的编辑器去开发 Qt 程序
最近給xmake新增了對(duì) Qt SDK 環(huán)境的支持,現(xiàn)在我們完全可以脫離 Qt Creator 進(jìn)行 Qt 應(yīng)用程序的開發(fā),甚至配合 vscode/idea/sublime/vim 等編輯器+xmake 插件(xmake-vscode, xmake-idea, xmake-sublime ...),
用戶完全可以切換到自己最常用的編輯器環(huán)境中去開發(fā)和構(gòu)建 Qt 程序,例如這樣:
通過模板創(chuàng)建空工程
xmake 內(nèi)置了一些工程模板可以用來快速創(chuàng)建一個(gè)基于 Qt 的空工程,例如:
$ xmake create -l c++ -t console_qt test $ xmake create -l c++ -t static_qt test $ xmake create -l c++ -t shared_qt test $ xmake create -l c++ -t quickapp_qt test目前主要提供上述四種工程模板,對(duì)應(yīng):控制臺(tái)程序、靜態(tài)庫、動(dòng)態(tài)庫、ui 應(yīng)用程序。
以 quickapp 工程為例,最后生成的空工程xmake.lua內(nèi)容大概長(zhǎng)這樣:
target("qt_demo")-- add rulesadd_rules("qt.application")-- add headersadd_headers("src/*.h")-- add filesadd_files("src/*.cpp") add_files("src/qml.qrc")-- add frameworksadd_frameworks("QtQuick")Qt SDK 環(huán)境配置
默認(rèn)情況下 xmake 會(huì)自動(dòng)探測(cè) Qt 環(huán)境,當(dāng)然如果找不到 Qt SDK 環(huán)境,用戶也可以手動(dòng)指定 Qt SDK 環(huán)境目錄:
$ xmake f --qt=~/Qt/Qt5.9.1靜態(tài)庫程序
xmake 通過內(nèi)置的構(gòu)建規(guī)則qt.static,將其應(yīng)用到對(duì)應(yīng)的 target,即可讓相關(guān) target 支持 Qt 靜態(tài)庫的構(gòu)建,非常的方便簡(jiǎn)潔,關(guān)于構(gòu)建規(guī)則的說明,可參考相關(guān)文檔:內(nèi)建規(guī)則
如果大家想要支持其他構(gòu)建環(huán)境,也只需要方便的自定義一個(gè)自己的擴(kuò)展規(guī)則,應(yīng)用到對(duì)應(yīng)的 target 即可實(shí)現(xiàn),言歸正傳,我們看下 Qt 靜態(tài)庫的xmake.lua描述:
target("test")add_rules("qt.static")add_files("src/*.cpp")add_frameworks("QtNetwork", "QtGui")非常簡(jiǎn)單,一般只需要這幾行就 ok 了,如果需要用到 Qt 的一些框架庫,可以通過add_frameworks來添加, 接著就是正常的編譯過程:
$ xmake動(dòng)態(tài)庫程序
動(dòng)態(tài)庫程序跟上節(jié)介紹的靜態(tài)庫描述規(guī)則類似,唯一的區(qū)別就是吧構(gòu)建規(guī)則改成add_rules("qt.shared")就行了。
target("test")add_rules("qt.shared")add_files("src/*.cpp")add_frameworks("QtNetwork", "QtGui")那add_rules("qt.shared")和之前的set_kind("shared")有什么區(qū)別呢,區(qū)別就是:
- set_kind("shared"): 是 xmake 最為基礎(chǔ)的動(dòng)態(tài)庫構(gòu)建模式,非常原始,不附加任何框架層的依賴庫和配置
- add_rules("qt.shared"):僅用于 Qt 動(dòng)態(tài)庫的構(gòu)建,屬于內(nèi)置的擴(kuò)展規(guī)則,會(huì)附加 Qt SDK 的構(gòu)建環(huán)境
控制臺(tái)程序
控制臺(tái)也是類似,直接替換構(gòu)建規(guī)則就可以了:qt.console
target("test")add_rules("qt.console")add_files("src/*.cpp")Quick 應(yīng)用程序
從 Qt 目前最新的 SDK,主要提供了兩種 ui app 的構(gòu)建框架,Quick App 和 Widgets App,xmake 也都進(jìn)行了支持,并且統(tǒng)一規(guī)范成:qt.application Qt 應(yīng)用程序規(guī)則來簡(jiǎn)化設(shè)置。
target("qt_quickapp")add_rules("qt.application")add_files("src/*.cpp") add_files("src/qml.qrc")add_frameworks("QtQuick")看上述描述,僅僅只需要把對(duì)應(yīng)的qml.qrc作為源文件添加進(jìn)去,然后附加需要的 QtQuick 依賴庫就行了。
注:雖然 xmake 的add_links也是用來添加依賴庫進(jìn)行鏈接的,但是這里建議對(duì)于 Qt SDK 提供的庫還是用add_frameworks來添加,因?yàn)樗?Qt 的構(gòu)建規(guī)則都對(duì)add_frameworks進(jìn)行了擴(kuò)展,
對(duì) Qt 自帶的框架庫進(jìn)行了更好的支持,也能根據(jù)構(gòu)建模式自動(dòng)切換 debug/release 版本的 Qt 庫。
Widgets 應(yīng)用程序
Widgets App 的描述規(guī)則還是用的qt.application,只需要把.ui 文件添加進(jìn)去就行了,唯一需要注意的是,帶Q_OBJECTmeta 的頭文件,例如:mainwindow.h這種,
因?yàn)橛袀€(gè) moc 預(yù)處理過程,所以也需要把它添加到源文件中,這樣 Qt 的構(gòu)建規(guī)則就會(huì)檢測(cè)到,將其自動(dòng)進(jìn)行 moc 預(yù)處理。
關(guān)于 Qt SDK 環(huán)境支持的更多詳情可以參考:#160
項(xiàng)目源碼:https://github.com/tboox/xmake,歡迎大伙 star
原文出處:http://tboox.org/cn/2018/05/30/support-qt/
總結(jié)
以上是生活随笔為你收集整理的xmake 新增对 Qt 编译环境支持,用自己最喜爱的编辑器去开发 Qt 程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c#利用三层架构做一个简单的登录窗体
- 下一篇: rsync的配置应用