1. 程式人生 > >【Qt】認識Qt的Pro檔案

【Qt】認識Qt的Pro檔案

        Qt開發中,pro檔案是對正工程所有原始碼、編譯、資源、目錄等的全方位配置的唯一方式,pro檔案的編寫非常重要,以下對幾個重要項進行說明(win和linux,mac平臺通用配置)

註釋

以”#”開始的行,直到結束

模板變數

告訴qmake生成哪種makefile

TEMPLATE = app 其中

app -表示該工程建立一個應用程式的makefile。這是預設值,所以如果模板沒有被指定,這個將被使用 lib - 表示該工程建立一個庫的makefile 生成目錄

指定生成的可執行程式的目錄,可以絕對和相對路徑

DESTDIR += ../bin生成的應用程式名

軟體名

TARGET = qtest 編譯選項

增添或者移除某個模組  比如增添C++11和console支援,Qt的各模組也在這裡面新增

CONFIG += console c++11 network CONFIG -= qt 可以用空格分隔或者”\”來隔行

目標檔案目錄

obj檔案存放的目錄,可以絕對或相對路徑

OBJECTS_DIR += ../tmp工程中包含的標頭檔案

表示本工程中的標頭檔案

HEADERS += \     libcurl/curl/curl.h \     libcurl/curl/curlbuild.h \     libcurl/curl/curlrules.h \ 只要qtcreator目錄樹裡add進去了就自動新增

工程中包含的原始檔

表示本工程中的原始檔

SOURCES += mytest.cpp\            main.cpp 只要qtcreator目錄樹裡add進去了就自動新增

工程中包含的資原始檔

表示本工程包含的資原始檔

RESOURCES += qrc/painter.qrc 只要qtcreator目錄樹裡add進去了就自動新增,更改pro檔案會同步更新qtcreator裡的目錄樹,但不會影響硬碟上的資原始檔

附加標頭檔案包含目錄

一般要編譯連結第三方庫時配置include目錄  例如

INCLUDEPATH += ./boost/include\                src/thirdpart/include INCLUDEPATH += D:/boost/include\                E:/cocos2dx/include 可以用絕對或相對路徑 相對路徑中./可以省略 路徑中不允許出現空格連結庫

對於靜態庫(.lib, .a)以及動態庫.so

LIBS += -LD:/codetest/libcurlcpp/libcurl/lib/ -llibcurl\         -LD:/codetest/libcurlcpp/libcurl/lib/ -lws2_32\         -LD:/codetest/libcurlcpp/libcurl/lib/ -lwldap32\         -LD:/codetest/libcurlcpp/libcurl/lib/ -lopencv\         -LD:/codetest/libcurlcpp/libcurl/lib/ -lzmq 或者

LIBS += D:/codetest/libcurlcpp/libcurl/lib/libcurl.lib\         D:/codetest/libcurlcpp/libcurl/lib/ws2_32.lib\         D:/codetest/libcurlcpp/libcurl/lib/wldap32.lib         D:/codetest/libcurlcpp/libcurl/lib/opencv.a 或者

LIBS += $$PWD/libcurl/lib/libcurl.lib\         $$PWD/libcurl/lib/ws2_32.lib\         $$PWD/libcurl/lib/wldap32.lib

可以用-L指定目錄,-l指定庫的名稱(無需字尾,.lib,.a, .so都適用) 可以直接通過絕對路徑和相對路徑指定庫的完整path(需字尾,.lib,.a, .so都適用),相對路徑用$$pwd字首,路徑不允許空格 LIBS += somepath 這個可以多行寫,也可以用“\”隔行 最後一種只適用於windows靜態庫 對於linux連結庫, 比如opencv專案用make編譯出的libopencv.a或者libopencv.so,連結的時候必須寫 -lopencv ,寫專案的名字而不是庫的檔名字 對於動態庫dll,必須拷貝到exe執行目錄或者在環境變數裡配置路徑

預編譯巨集

DEFINES += USE_OPENSSL\            CURL_STATICLIB 類似於vs裡面在工程裡設定預編譯選項

平臺相關性處理

根據qmake所執行的平臺來使用相應的作用域來進行處理

win32 {     SOURCES += 1.cpp } else {     SOURCES += 2.cpp } 根據平臺進行條件編譯