Qt項目管理(33個規則)


2016-06-20 花莫弦 小小雜貨鋪LY

一、qmake的介紹

    qmake是Trolltech公司創建的用來為不同的平台和編譯器書寫Makefile的工具。

    手寫Makefile是比較困難並且容易出錯的,尤其是需要給不同的平台和編譯器組合寫幾個Makefile。使用qmake,開發者創建一個簡單的“項目”文件並且運行qmake生成適當的Makefile。qmake會注意所有的編譯器和平台的依賴性,可以把開發者解放出來只關心他們的代碼。Trolltech公司使用qmake作為Qt庫和Qt所提供的工具的主要連編工具。

    qmake也注意了Qt的特殊需求,可以自動的包含moc和uic的連編規則。

Qmake 編譯信息可以通過qmake.conf進行配置。

 

二、pro、pri、prf、prl

    Qt的工程管理文件常用的主要分為pro、pri、prf、prl四種類型的文件,其中pro文件是主文件,另外三種都可以包含在pro文件中,他們的書寫規則都遵循qmake的規則。

    1、prl鏈接文件,這個文件主要和生成與使用靜態庫密切相關。

    生成靜態庫時,我們需要使用 config += create_prl 配置,編譯生成和庫文件同名的 *.prl 文件;

    當工程的TEMPLATE為app時,會自動添加如下指令CONFIG += link_prl,在查找庫文件的時候,會嘗試找相應的 *.prl 文件進行鏈接。

    2、prf特征文件,這個文件主要標識編譯特性,可以使用兩種方式加載

    1)CONFIG += *prf;

    2)load(*prf)。

    3、pri配置文件,通常放置一些通用的配置信息,進行工程管理。

    4、pro工程管理文件,通常放置與具體工程相關的信息,以及進行層疊式模塊的管理。

 

三、qmake的規則簡介

    1、使用 # 進行注釋;

    2、模板變量告訴qmake為這個應用程序生成哪種makefile。

    例如 TEMPLATE = app 應用程序
    app -建立一個應用程序的makefile。

    lib - 建立一個庫的makefile。
    vcapp - 建立一個應用程序的VisualStudio項目文件。
    vclib - 建立一個庫的VisualStudio項目文件。
    subdirs -這是一個特殊的模板,創建層疊式子目錄,進行工程管理。

(eg:TEMPLATE = subdirs

     SUBDIRS += one

     SUBDIRS += two)

    3、指定生成的應用程序放置的目錄  DESTDIR += ../bin ;

    4、指定生成的應用程序名 TARGET = pksystem (和pro文件名相同);

    5、配置信息,CONFIG用來告訴qmake關於應用程序的配置信息。

    例如CONFIG+= qt warn_on release,其中+=為追加,=為賦值,warn_on為qmake要把編譯器設置為輸出警告信息的,release部分告訴qmake應用程序必須被連編為一個發布的應用程序,此處可以使用debug替換。
    6、指定uic命令,將.ui文件轉化成ui_*.h文件的存放的目錄 UI_DIR += forms ;

    7、指定rcc命令,將.qrc文件轉換成qrc_*.h文件的存放目錄
    RCC_DIR += ../tmp ;

    8、指定moc命令,將含Q_OBJECT的頭文件轉換成標准.h文件的存放目錄
    MOC_DIR += ../tmp ;

    9、指定目標文件(obj)的存放目錄 OBJECTS_DIR += ../tmp ;

    10、程序編譯時依賴的相關路徑 DEPENDPATH += . forms include qrc sources ;

    11、頭文件包含路徑 INCLUDEPATH += . ;

    12、源文件編碼方式 CODECFORSRC = GBK ;

    13、工程中包含的頭文件 HEADERS += *.h ;

    14、工程中包含的源文件SOURCES += *.cpp ;
    15、工程中包含的.ui設計文件 FORMS += *.ui ;
    16、工程中包含的資源文件 RESOURCES += *.qrc ;

    17、LIBS += -L庫路徑 -l庫名 ;

    18、定義編譯選項,DEFINES += XX,在.h文件中就可以使用:#ifdefine xx;

    19、條件編譯 (主要區分不同平台和release、debug版本)

    win32 {

    SOURCES += *.cpp

    }

    unix {

    SOURCES += *.cpp

    }

    !exists( main.cpp ) {

    error( “No main.cpp file found” )

    }

    win32:debug {

    CONFIG += console

    }

    CONFIG(debug, debug|release) {

}

(注:{必須放置在條件的同一行))

    20、message(信息);

    21、Include(*.pro/*.pri);

    22、Translations Qt語言國際化文件

    23、命令行(配置好Qt環境變量)qmake -project 生成pro文件(需要配置qmake.conf手動修改pro文件進行處理),qmake  *.pro生成makefile文件,nmake(區分編譯器)編譯即可;

    24、qmake -tp vc *.pro(-r)生成vs解決方案;

    25、qmake -spec macx-xcode *.pro 生成xcode工程文件;

    26、warn_off - 編譯器會輸出盡可能少的警告信息;

    27、QT += xml  加入Qt模塊;

    28、INSTALLS + = target sources   指定安裝路徑;

    29、QMAKE_CXXFLAGS_WARN_ON C++編譯器警告;

    30、QMAKE_CFLAGS_WARN_ON C編譯器警告;

    31、W34100  unreferenced formal parameter ;

    32、W34189  local variable is initialized but not referenced;

    33、contains(config,thread)根據thread是否在config中進行編譯。

 

四、qmake編譯選項

    1、qmake [options] files

    1)-help 列出qmake幫助信息;

    2)-o file 直接輸出到文件file,如果這個選項沒有指定, qmake將會嘗試使用合適的文件名作為輸出,這依賴於當前的運行模式。
    3)-d 列出qmake的調試信息;

    4)-Wall   qmake將會報告所有知道的警告信息。

 

五、參考鏈接

    1、http://www.kuqin.com/qtdocument/qmake-manual-7.html

    2、https://msdn.microsoft.com/en-us/library/ysb0wexw.aspx

 

http://mp.weixin.qq.com/s?__biz=MzI4NzIwMDQ3OA==&mid=2247483680&idx=1&sn=33844b0bfdb9cae3be8c2137f9e70d11&scene=23&srcid=0620axBP8kO6hzc03MHxqfNV#rd


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM