QT.pro文件

目录

LIBS

INCLUDEPATH 

宏定义DEFINES

CONFIG 

TARGET

TEMPLATE


.pro文件是qmake用来生成makefile文件的中间文件。

# [QT+= ]语法,定义该工程包含的Qt模块
QT       += core gui
# 由于Qt5将widgets模块从gui模块独立出来了,所以定义Qt主版本大于4就要包含widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

# 编译宏,使用c++17编译
CONFIG += c++17
# 也可以 CONFIG -=
# CONFIG -= debug 不编译debug类型

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

# 需要编译的源文件路径(项目根目录的相对路径)
SOURCES += \
    main.cpp \
    widget.cpp

# 需要编译的头文件路径(项目根目录的相对路径)
HEADERS += \
    widget.h

# 需要编译的ui文件路径(项目根目录的相对路径)
FORMS += \
    widget.ui

# 只知道是设置目标可以执行文件路径的,具体语法看不懂,如果你知道欢迎评论区留言
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

QT       += core gui sql xml concurrent network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport
  • QT += core gui sql xml concurrent network:项目使用了 Qt 的 core(核心库)、gui(图形界面)、sql(数据库)、xml(XML 解析)、concurrent(并发处理)、network(网络支持)。若项目中要排除某个模块,也可用QT -=配置项。

  • greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport:如果 Qt 版本大于 4,启用 widgets(窗口部件)和 printsupport(打印支持)。

LIBS

win32: LIBS += -lws2_32
LIBS += -L$$PWD/ -llibfftw3-3
  • win32: LIBS += -lws2_32:在 Windows 平台上,链接 Windows Socket 2 库(ws2_32.lib)。

  • LIBS += -L$$PWD/ -llibfftw3-3:在当前目录($$PWD)下查找 libfftw3-3.lib,用于 FFT 计算。

$$PWD 代表当前 .pro 文件所在的路径 
-L$$PWD/. 表示在当前目录查找库文件 
链接名为 libfftw3-3 的库文件

INCLUDEPATH 

INCLUDEPATH += $$PWD/eigen-3.4.0 $$PWD/util/fftw3.h
  • $$PWD/eigen-3.4.0:添加 eigen(一个 C++ 线性代数库)的路径,将 $$PWD/eigen-3.4.0 目录添加到编译器的头文件搜索路径

  • $$PWD/util/fftw3.h:添加 FFTW 库的头文件路径。

这部分可以理解为别人写好了的头文件和源文件的库,直接拿来用。

宏定义DEFINES

想利用宏定义实现不同的代码功能,但不想每次都去代码里注释或者不注释相关的宏定义变量,在这种情况下,就可以在pro里面利用DEFINES字段实现相关宏的定义。

DEFINES += MYTEST

#ifdef MYTEST
    qDebug() << "mytest ok";
#else
    qDebug() << "mytest no";
#endif

// 输出信息 mytest ok 。

在 Qt .pro 文件中,DEFINES 变量用于定义 预处理宏(Preprocessor Macros),这些宏会在编译时传递给 C++ 预处理器,相当于在代码中使用 #define 预编译指令。例如: 

DEFINES += QT_DEPRECATED_WARNINGS

// 相当于在编译时对所有源文件添加 -DQT_DEPRECATED_WARNINGS,在代码中相当于:
#define QT_DEPRECATED_WARNINGS

// QT_DEPRECATED_WARNINGS这个的作用是这样,Qt 编译器会对使用已废弃(Deprecated)的 API 进行警告。

// 在 Windows 上,默认使用 Unicode 字符集,但某些情况下可能需要关闭:被移除,可能是为了兼容非 Unicode 编码。
DEFINES -= UNICODE

CONFIG 

CONFIG 变量用于 配置编译选项,影响项目的编译方式。例如,它可以控制是生成 静态库/动态库/可执行文件,还是启用 调试模式/发布模式 等。

CONFIG += debug 的作用是指定项目以调试模式进行构建。
另外,debug 配置仅适用于开发过程中进行调试,如果要发布或部署应用程序,应该使用 release 配置,它将编译优化过的可执行文件,以提供更好的性能。

CONFIG += release 来启用发布模式,适用于最终发布,优化后执行速度快。。

CONFIG(debug, debug|release){
    
}else{
    
}
CONFIG(debug, debug|release) 是一个条件语句,用于在 Qt 项目文件(.pro 文件)中根据配置进行条件编译。

它的作用是检查当前的构建配置是否是 debug ,如果是的话,执行花括号 { } 内的代码块。如果不是这两种配置之一,则会执行 else 后面的代码块。
通过这种方式,可以根据构建配置的不同,选择性地包含或排除某些代码、文件或设置,以适应不同的开发需求。
启用 C++11 / C++17
CONFIG += c++11
CONFIG += c++17

用于开启特定的 C++ 标准支持。

TARGET

TARGET = Synthesize 
指定生成的可执行文件(或库)的 名称

TEMPLATE

TEMPLATE = app
指定 项目类型,app 表示要生成一个 可执行程序。


Qt .pro 文件中的 TEMPLATE 主要有以下几种:
app(默认):编译生成 可执行文件(应用程序)。
lib:编译生成 库文件(可动态库 dll/so 或静态库 lib/a)。
subdirs:用于 包含多个子项目(比如主工程管理多个模块)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

躺着听Jay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值