在使用Qt Creator開發項目的時候,需要配置*.pro檔案,這裡面的内容繁多,各種配置屬性,變量等都可以設定,最重要的是編譯就依賴這些配置,有時候一個配置設定不對,報各種莫名其妙的錯誤,本文是對pro檔案的配置屬性作一個解釋,友善以後在開發過程中引用參考。
首先來看一個示例:
QT += core gui network websockets xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
DEFINES += SQLITE_HAS_CODEC
CONFIG +=debug_and_release
INCLUDEPATH += ./src
#window版64位 openssl頭檔案路徑
INCLUDEPATH += $${PWD}/ThirdPartyInclude
#MyVersion = 1.0.0
message(INCLUDEPATH = $${INCLUDEPATH})#配置屬性
#message("MyVersion = " $${MyVersion})#自定義
#message("PATH = " $$(PATH))#環境變量
#message(Qt version = $$[QT_VERSION])#内置變量
#message(“Qt version” = $${QT_VERSION})#内置變量
#message("CONFIG =" $${CONFIG}) #配置屬性
#message(OUT_PWD = $${OUT_PWD}) #配置屬性
message("PWD = " $${PWD}) # D:/work/IMChat
#windows平台
win32:{
#windows 32位
contains(QT_ARCH, i386) {
CONFIG(debug, debug|release){
TARGET = IMChat
DESTDIR = ../win32/debug
LIBS += -L$$PWD/../win32/debug -llibeay32 -lssleay32
}else{
TARGET = IMChat
DESTDIR = ../win32/release
LIBS += -L$$PWD/../win32/lib -llibeay32 -lssleay32
}
message("32-bit " $${DESTDIR})
}else {#windows 64位
CONFIG(debug, debug|release){
TARGET = IMChat
DESTDIR = ../win64/debug
LIBS += -L$$PWD/../win64/debug -llibeay32 -lssleay32
}else{
TARGET = IMChat
DESTDIR = ../win64/release
LIBS += -L$$PWD/../win64/lib -llibeay32 -lssleay32
}
message("64-bit " $${DESTDIR})
}
}else{#Mac平台隻有64位
CONFIG(debug, debug|release){
TARGET = IMChat
DESTDIR = ../bin64/debug
}else{
TARGET = IMChat
DESTDIR = ../bin64/release
}
message($DESTDIR)
}
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
res.qrc
字段的解釋:
HEADERS:指定C++頭檔案
SOURCES:指定C++實作檔案
FORMS:指定需要uic處理的ui檔案
RESOURCES:指定需要rcc處理的qrc檔案
DEFINES:指定預定義預處理器符号
INCLUDEPATH:指定C++編譯器搜尋頭檔案路徑
LIBS:指定工程要連結的庫
CONFIG:指定工程配置和編譯參數
QT:指定工程所要使用的Qt子產品
VERSION:指定目标庫版本号
TARGET:指定可執行檔案或庫的基本檔案名,預設為目前目錄名
DESTDIR:指定可執行檔案放置的目錄
DLLDESTDIR:指定目标庫檔案放置的目錄
CONFIG:指定工程配置和編譯參數
以下對CONFIG變量做主要介紹:
debug:編譯有調試資訊的可執行檔案或則庫
release:編譯不具有調試資訊可執行檔案或者庫(如果同時指定debug release時,隻有debug有效)
warn_off:關閉大量警告,預設是打開的
qt:指應用程式使用Qt
dll:動态編譯庫
staticlib:靜态編譯庫
plugin:編譯一個插件
console:應用程式需要寫控制台
當我們寫CONFIG變量時,可以使用
如:CONFIG = qt release warn_off
或者CONFIG = qt
CONFIG += release
CONFIG += warn_off
當想要移除某個設定時:CONFIG -= warn_off
在pro檔案裡,可以使
message來輸出各種列印資訊,但每個資訊的格式有差別
MyVersion = 1.2
#Qt的配置屬性,通過$${varName}通路,例如
message("CONFIG =" $${CONFIG}) #配置屬性
message(OUT_PWD = $${OUT_PWD})#配置屬性
message(INCLUDEPATH = $${INCLUDEPATH})#配置屬性
CONFIG, INCLUDEPATH, OUT_PWD這些是配置屬性
#Qt的内置變量,通過$${varName}或$$[varName]通路,例如
message(Qt version = $$[QT_VERSION])#内置變量
message(“Qt version” = $${QT_VERSION})#内置變量
QT_VERSION 是内置變量
#環境變量, 通過$$(varName),例如
message("PATH = " $$(PATH))#環境變量
PATH 是環境變量
#自定義變量,通過$${varName}通路,例如
message("MyVersion = " $${MyVersion})#自定義
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL90zZiFDcXFWN1clWv5kMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL3kzMxATNxATM0ETMxAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
平台配置
win32:{SOURCES+= main.cpp }
unix:{SOURCES+= main.cpp }
等,裡面還可以寫條件區分版本
參考:
http://blog.chinaunix.net/uid-20665441-id-305473.html
http://blog.chinaunix.net/uid-23670869-id-2391678.html
https://blog.csdn.net/fanyun_01/article/details/79122558
http://blog.chinaunix.net/uid-23670869-id-2391678.html
https://blog.csdn.net/zkl99999/article/details/61197930
https://blog.csdn.net/zhaoyun_zzz/article/details/90575031
https://blog.csdn.net/u012734169/article/details/79740763
更新V2