QT pro文件詳細寫法+實例


很多的初學者都沒有注意pro 文件的內容 今天簡單的介紹一下 這個文件主要內容

TEMPLATE:這個變量是用來定義你的工程將被編譯成什么模式。如果沒有這個設置,系統將默認編譯為application。

                   TEMPLATE=app表示這個project將被編譯成一個應用程序(application)

                                      lib(生成庫的Makefile)

                                      subdirs(生成有多級目錄管理的Makefile),

                                      vcapp,vclib,vcsubdirs(對應Windows 下面VC)

TEMPLATE = app  //文件中的寫法

TARGET:生成最后目標的名字

TARGET = keysiUI

DESTDIR:指定生成目標的路徑

DEPENDPATH:工程的依賴路徑

INCLUDEPATH:這個用來指定工程要用到的頭文件路徑

    INCLUDEPATH += /opt/ros/indigo/include
    DEPENDPATH +=   /opt/ros/indigo/include

    INCLUDEPATH += /usr/include/curl
    DEPENDPATH +=   /usr/include/curl

SOURCES:工程需要的源文件

SOURCES += main.cpp\
        mainwindow.cpp \
    browser.cpp \
    singleton.cpp \

HEADERS:工程所需要的頭文件

HEADERS  += mainwindow.h \
    include.h \
    includeClass.h 

FORMS:工程要用到的ui文件(ui文件時用QT設計器生成的)

HEADERS  += mainwindow.h \
    include.h \
    includeClass.h 

LIBS:加載動態庫

    LIBS += -l:/opt/ros/indigo/lib/libcv_bridge.so

    LIBS +=  -l:/usr/lib/x86_64-linux-gnu/libboost_thread.so
    LIBS +=  -l:/usr/lib/x86_64-linux-gnu/libpthread.so
    INCLUDEPATH += /usr/include
    LIBS +=  -l:/usr/lib/x86_64-linux-gnu/libjsoncpp.so
    LIBS +=  -l:/usr/lib/x86_64-linux-gnu/libcurl.so


    LIBS += -L/opt/ros/indigo/lib -lroscpp -lrospack -lpthread -lrosconsole -lrosconsole_log4cxx -lrosconsole_backend_interface -lxmlrpcpp -lroscpp_serialization -lrostime  -lcpp_common  -lroslib -ltf  -lyaml-cpp
###2017-1-18 pm    sub -lkdl_conversions
    LIBS += -l:/opt/ros/indigo/lib/libroslib.so

TRASHLATIONS:加載要用到的語言翻譯*.ts文件

RESOURCES:加載要用到的資源*.qrc文件。

RESOURCES += \
    image.qrc

CONFIG:告訴qmake應用程序的配置信息。

                   這個變量可以用來指定是生成debug模式還是release模式,也可以都生成。

                   也可以用來打開編譯器警告(warn_on輸出盡可能多的警告信息)或者

                   關閉(warn_off -編譯器會輸出盡可能少的警告信息)。還可以用來配置要Qt加載庫。

                   想要qt+多線程:CONFIG+=qt thread

                   Eg:

                   CONFIG+=debug_and_release

                   CONFIG(debug,debug|release){

                   TARGET= hello

                   DESTDIR= ./debug

                   }else{

                   TARGET= hello

                   DESTDIR= ./release

                   }

CONFIG += c++11
CONFIG -= app_bundle

UI_DIR:UIC將ui轉化為頭文件所存放的目錄

RCC_DIR:RCC將qrc文件轉化為頭文件所存放的目錄

MOC_DIR:MOC命令將含Q_OBJECT的頭文件轉換為標准的頭文件存放的目錄

OBJECTS_DIR:生成的目標文件存放的目錄

DEFINES:應用程序所需的額外的預處理程序定義的列表#在.h文件中就可以使用:#ifdefinexx_xx_xxx

LIBS += -L folderPath  //引入的lib文件的路徑  -L:引入路徑

                   Release:LIBS+= -L folderPath // release 版引入的lib文件路徑

                   Debug:LIBS+= -L folderPath // Debug 版引入的lib 文件路徑

RC_FILE = xxx.icns   //程序圖標

QT是跨平台的,所以我們在不同的平台上用同一個pro文件,這要加入有關平台的信息。

windows是win32,Linux平台是unix。

                   Eg:

                   在Windows和Linux的動態庫文件格式是不一樣的。一個是lib文件一個是so文件

                   win32:LIBS+= ./mitab/mitab_i.lib

                   unix:LiBS+= ./mitab/libmitab.so

                   eg:

                   win32{

                   SOURCES+= hello_win.cpp //win平台

                   }

                   unix{

                   SOURCES+= hello_win.cpp //unix/linux平台

                   }

以通過在其它任何一個變量的變量名前加$$來把這個變量的值分配給當前的變量。例如:

                   MY_DEFINES= $$DEFINE  #將DEFINE的值分配給MY_DEFINES


免責聲明!

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



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