開源推薦——QtTemplateApp

QtTemplateApp介紹

qt項目模板,qmake,持續(xù)更新完善 Pro文件為qt項目管理文件,可以滿足我們開發(fā)過程中的項目配置需求。本文旨在生成一個功能完善的Qt項目文件模板,重點是pro文件通用配置,希望最終能夠拿來就用,為各位同仁節(jié)省更多時間專注于業(yè)務(wù)開發(fā)。有了此項目你只需放開或者屏蔽一些內(nèi)容即可創(chuàng)建你想要的項目。

開源地址

github地址:https://github.com/nealwang123/QtTemplateApp.git

gitee地址:https://gitee.com/nealwang2021/qt-template-app.git

Pro文件關(guān)鍵字簡要介紹

QT?+=?core?gui?:添加QT需要的模塊TARGET?=?TemplateApp:生成最后目標(biāo)的名字TEMPLATE?=app:應(yīng)用程序的生成模式,默認(rèn)是app生成應(yīng)用程序,如果需要生成庫的話就用libCONFIG?+=debug:一些配置信息,如C++版本,編譯模式debug或release等HEADERS?+=:工程用到的頭文件SOURCES?+=:工程用到的源文件LIBS?+=?-L$$OUT_PWD/../funDll/?-lfunDll:工程依賴的庫DESTDIR?+=:目標(biāo)生成路徑INCLUDEPATH?+=?$$PWD/../mydll?:編譯時#include需要搜索的目錄DEPENDPATH?+=:工程的依賴路徑,qmake會掃描這些目錄以查找依賴項FORMS?+=:工程中的ui文件PWD:當(dāng)前.pro文件所在的路徑OUT_PWD:Makefile所在的路徑QT是跨平臺的,所以我們在不同的平臺上用同一個Pro文件,這要加入有關(guān)平臺的信息。win32{}unix{}

Pro文件模板完善

在windows上qmake的時會自動將此信息轉(zhuǎn)換成rc文件。對于早期的Qt4版本你可以手動寫rc文件實現(xiàn)。

#程序版本VERSION?=?2035.10.01#程序圖標(biāo)RC_ICONS?=?main.ico#產(chǎn)品名稱QMAKE_TARGET_PRODUCT?=?QtTemplateApp#版權(quán)所有QMAKE_TARGET_COPYRIGHT?=?某某科技#文件說明QMAKE_TARGET_DESCRIPTION?=?臺灣是中國不可分割的一部分

以管理員權(quán)限運行程序,限定在MSVC編譯器,在項目Pro文件中增加如下代碼。 重新編譯之后,程序會帶個盾牌標(biāo)志。但是會有個后遺癥,會發(fā)現(xiàn)我們在debug下,無法進行調(diào)試了,會彈出"The CDB process terminated"的錯誤;這是因為我們的QtCreator沒有以管理員權(quán)限運行,卻對管理員權(quán)限的程序進行調(diào)試。當(dāng)重新以管理員權(quán)限運行QtCreator,并進行調(diào)試,就不會報錯了。

#以管理員運行QMAKE_LFLAGS?+=?/MANIFESTUAC:"level='requireAdministrator'?uiAccess='false'"?#VS2013?在XP運行?未驗證#QMAKE_LFLAGS?+=?/SUBSYSTEM:WINDOWS,"5.01"

#指定編譯生成的文件到temp目錄?分門別類存儲MOC_DIR?=?temp/mocRCC_DIR?=?temp/rccUI_DIR?=?temp/uiOBJECTS_DIR?=?temp/obj

#指定編譯生成的可執(zhí)行文件到bin目錄DESTDIR?=?bin

CONFIG += console

#打印版本信息message(qt?version:?$$QT_VERSION)#判斷當(dāng)前qt版本號QT_VERSION?=?$$[QT_VERSION]QT_VERSION?=?$$split(QT_VERSION,?".")QT_VER_MAJ?=?$$member(QT_VERSION,?0)QT_VER_MIN?=?$$member(QT_VERSION,?1)#下面是表示?Qt5.5及以上版本greaterThan(QT_VER_MAJ,?4)?{greaterThan(QT_VER_MIN,?4)?{#自己根據(jù)需要做一些處理}}#QT_ARCH是Qt5新增的,在Qt4上沒效果#打印當(dāng)前Qt構(gòu)建套件的信息message($$QT_ARCH)#表示arm平臺構(gòu)建套件contains(QT_ARCH,?arm)?{}#表示32位的構(gòu)建套件contains(QT_ARCH,?i386)?{}#表示64位的構(gòu)建套件contains(QT_ARCH,?x86_64)?{}#其實Qt內(nèi)置了主版本號和子版本號變量#判斷當(dāng)前qt版本號message($$QT_ARCH?:?$$QT_VERSION?->?$$QT_MAJOR_VERSION?.?$$QT_MINOR_VERSION)#下面的含義是如果版本?<?4.8lessThan(QT_MAJOR_VERSION,?5)?{lessThan(QT_MINOR_VERSION,?8)?{#這里放要做的處理}}#下面的含義是如果版本?<?5.12.0REQ_QT_MAJOR?=?5REQ_QT_MINOR?=?12REQ_QT_PATCH?=?0lessThan(QT_MAJOR_VERSION,?$$REQ_QT_MAJOR)|lessThan(QT_MINOR_VERSION,$$REQ_QT_MINOR)|lessThan(QT_MINOR_VERSION,?$$REQ_QT_PATCH)?{#這里放要做的處理}#下面的含義是如果版本?>=?5.5greaterThan(QT_MAJOR_VERSION,?4)?{greaterThan(QT_MINOR_VERSION,?4)?{#這里放要做的處理}}//代碼中判斷版本不要太簡單#if?(QT_VERSION?>=?QT_VERSION_CHECK(6,0,0))//這里放要做的處理#endif//下面表示?>=?5.0.0#if?QT_VERSION?>=?0x050000...#endif//下面表示?<?5.12.10#if?QT_VERSION?<?0x050C0A...#endif

#禁用qdebug打印輸出 DEFINES += QT_NO_DEBUG_OUTPUT

法一

QMAKE_CXXFLAGS_RELEASE?=?$$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFOQMAKE_LFLAGS_RELEASE?=?$$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO

法二

#?QMAKE?*.pro-file:?release模式下禁用優(yōu)化并開啟調(diào)試功能##?gcc#QMAKE_CXXFLAGS_RELEASE?+=?-O0?-g#QMAKE_CFLAGS_RELEASE?+=?-O0?-g#QMAKE_LFLAGS_RELEASE?=?#?msvc(VS調(diào)試模式,在VS2015?+?QT5.6.3環(huán)境下調(diào)試通過)QMAKE_CXXFLAGS_RELEASE?+=?/ZiQMAKE_CXXFLAGS_RELEASE?+=?/OdQMAKE_LFLAGS_RELEASE?+=?/DEBUG

DEFINES?+=QT_NO_DEBUG_OUTPUT?#?disable?debug?outputDEFINES?-=QT_NO_DEBUG_OUTPUT?#?enable?debug?output

qt主要通過 QMAKE_POST_LINK 和QMAKE_PRE_LINK,他們支持的函數(shù)以及寫法,可以在QtCreator的幫助中搜索 qmake Function Reference 查看詳情說明。

srcFile1?=?$$PWD/1.txtsrcFile2?=?$$PWD/2.txtdstDir?=?$$PWD/../bin#windows上需要轉(zhuǎn)換路徑斜杠?其他系統(tǒng)不需要srcFile1?=?$$replace(srcFile1,?/,?\\);srcFile2?=?$$replace(srcFile2,?/,?\\);dstDir?=?$$replace(dstDir,?/,?\\);#編譯前執(zhí)行拷貝?多個拷貝可以通過?&&?符號隔開QMAKE_PRE_LINK?+=?copy?/Y?$$srcFile1?$$dstDir?&&?copy?/Y?$$srcFile2?$$dstDir#編譯后執(zhí)行拷貝?多個拷貝可以通過?&&?符號隔開QMAKE_POST_LINK?+=?copy?/Y?$$srcFile1?$$dstDir?&&?copy?/Y?$$srcFile2$$dstDir

win32?{????contains(DEFINES,?WIN64)?{????	DESTDIR?=?$$PWD/../bin64????}?else?{????	DESTDIR?=?$$PWD/../bin32????}}

//解決UTF-8編碼中文亂碼的問題 #ifdef _MSC_VER #if _MSC_VER >= 1600 #pragma execution_character_set("utf-8") #pragma warning(disable : 4819) #endif // _MSC_VER >= 1600 #endif // _MSC_VER

參考鏈接

https://doc.qt.io/qt-5/qmake-manual.html

https://doc.qt.io/qt-5/qmake-project-files.html

https://doc.qt.io/qt-5/qmake-language.html

https://doc.qt.io/qt-5/qmake-common-projects.html

https://doc.qt.io/qt-5/qmake-precompiledheaders.html

https://doc.qt.io/qt-5/qmake-test-function-reference.html

https://libaineu2004.blog.csdn.net/article/details/89366925


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容