【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 } 根據平臺進行條件編譯