Qt的工程文件 *.pro文件详解

在使用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})#自定义

平台配置
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

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值