qmake
qmake 是 Qt 提供的一个跨平台的构建工具,在构建项目时,IDE会根据 pro 文件生成相应的构建脚本, 如 Makefile 或 Visual Studio 项目文件,再来进行项目的实际编译和链接。pro 文件是 qmake 工具的输入文件,用于描述项目的结构、依赖关系以及构建过程。我们先来观察一下系统自动生成的pro文件:
基础qmake文件语句分析
我们使用默认的配置创建工程以后会有一个pro
文件,其中的内容为
cmake
# 在项目文件中,注释需要使用 井号(#)
# 项目编译的时候需要加载哪些底层模块
# 这里加载的是core和gui模块
# core模块包含了Qt的核心功能,如事件循环、信号槽机制等
# gui模块包含了Qt的图形界面功能,如窗口、控件等
# widgets模块包含了Qt的窗口控件,如按钮、标签等
# 加载core和gui模块是必须的,否则无法编译
QT += core gui
# 如果当前Qt版本大于4,会添加一个额外的模块: widgets
# Qt 5中对gui模块进行了拆分,将 widgets 独立出来了
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 配置编译器使用C++17的语法进行编译
CONFIG += c++17
# 如果在项目中调用了废弃的函数,项目编译的时候会有警告的提示
# 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 \
mainwindow.cpp
# 要编译的头文件
HEADERS += \
mainwindow.h
# 要编译的ui文件
# ui文件是Qt Designer生成的界面文件,需要使用uic工具进行编译 编译后会生成一个同名的头文件,如mainwindow.ui会生成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
拷贝文件或目录
cmake
# 创建examples变量并配置
# 配置需要复制的文件或目录 支持使用通配符, $$PWD为QMake内置变量,含义为当前目录
examples.files = $$PWD/docs
# 配置需要复制的目标目录, $$OUT_PWD为QMake内置变量,含义为程序输出目录
examples.path = $$OUT_PWD
# 配置COPIES
COPIES += examples