功能描述:讲解 Qt 的 .pro 文件中的各个变量的含义以及赋值方法
注释
以 "#" 开始的行,直到结束
# 工程创建日期:2023.07.25
TEMPLATE
定义了工程的编译模式,默认编译为 app
app, 建立一个应用程序的 makefile,这是默认值
lib ,建立一个库的 makefile
vcapp ,建立一个应用程序的 Visual Studio 项目文件
vclib, 建立一个库的 Visual Studio 项目文件
subdirs, 这是一个特殊的模板,它可以创建一个能够进入特定目录,并且为一个项目文件生成makefile,并且为它调用 make 的 makefile
TEMPLATE=app
TARGET
指定生成的应用程序名
TARGET = pksystem;
DESTDIR
指定生成的应用程序放置的目录
DESTDIR = ../bin/
如上,生成的应用程序的路径为当前 pro 文件所在目录的上一级的 bin 目录下
DEPENDPATH
程序编译时依赖的相关路径
DEPENDPATH += . forms include qrc sources
INCLUDEPATH
指定工程要用到的头文件路径,一般包括用户自定义的头文件路径或没有放入系统头文件路径的头文件路径
INCLUDEPATH += .
SOURCES
工程需要的源文件
SOURCES += sources/main.cpp sources/painter.cpp
HEADERS
工程所需要的头文件
HEADERS += include/painter.h
FORMS
工程要用到的 ui 文件(ui 文件是用 QT 设计器生成的)
FORMS += forms/painter.ui
LIBS
加载动态库文件,-Lxxx 添加库文件的路径,-lxxx 添加库文件
LIBS+=./mitab/libmitab
Release:LIBS += -L folderPath -lxxx # release 版引入的lib文件路径
Debug:LIBS += -L folderPath -lxxx # Debug 版引入的lib文件路径
UI_DIR
UIC 将 ui 转化为头文件所存放的目录
RCC_DIR
RCC 将 qrc 文件转化为头文件所存放的目录
MOC_DIR
MOC 命令将含 Q_OBJECT 的头文件转换为标准的头文件存放的目录
OBJECTS_DIR
生成的目标文件存放的目录
OBJECTS_DIR += ../tmp
DEFINES
定义编译选项,在 .h 文件中就可以使用:#ifdefine xx_xx_xxx
#ifdef xx_xx_xxx
为程序建立图标的两种方法
方法一:RC_ICONS
RC_ICONS = $$PWD/Images/logo.ico
方法二:RC_FILE
RC_FILE += ./appicon.rc
version.h 中定义具体版本等信息(rc 文件是针对 windows 系统的)
#ifndef VERSION_H
#define VERSION_H
#define PRODUCT_ICON "logo.ico" // 图标
#define FILE_VERSION 4,0,2,666 // 文件版本
#define FILE_VERSION_STR "4.0.2.666"
#define PRODUCT_VERSION 4,0,2,888 // 产品版本
#define PRODUCT_VERSION_STR "4.0.2.888"
#define COMPANY_NAME "Digia"
#define INTERNAL_NAME "App.exe"
#define FILE_DESCRIPTION "Qt Creator based on Qt 5.7.0 (MSVC 2013, 32 bit)" // 文件说明
#define LEGAL_COPYRIGHT "Copyright 2008-2016 The Qt Company Ltd. All rights reserved." // 版权
#define ORIGINAL_FILE_NAME "App.exe" // 原始文件名
#define PRODUCT_NAME "Qt Creator" // 产品名称
#define ORGANIZATION_DOMAIN "https://www.qt.io/" // 域名
#endif // VERSION_H
.rc文件中信息
# if defined(UNDER_CE)
# include <winbase.h>
# else
# include <windows.h>
# endif
#include "version.h"
// 图标
IDI_ICON1 ICON PRODUCT_ICON
// 版本信息
VS_VERSION_INFO VERSIONINFO
FILEVERSION FILE_VERSION
PRODUCTVERSION PRODUCT_VERSION
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "CompanyName", COMPANY_NAME
VALUE "FileDescription", FILE_DESCRIPTION
VALUE "FileVersion", FILE_VERSION_STR
VALUE "InternalName", INTERNAL_NAME
VALUE "LegalCopyright", LEGAL_COPYRIGHT
VALUE "OriginalFilename", ORIGINAL_FILE_NAME
VALUE "ProductName", PRODUCT_NAME
VALUE "ProductVersion", PRODUCT_VERSION_STR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END
RESOURCES
加载要用到的资源 *.qrc 文件
RESOURCES += qrc/painter.qrc
CODECFORSRC
源文件编码方式
CODECFORSRC = GBK
TRASHLATIONS
加载要用到的语言翻译 *.ts 文件
CONFIG
增添或者移除某个模块,告诉 qmake 应用程序的配置信息,可以用来指定是生成 debug 模式还是 release 模式,也可以都生成;也可以用来打开编译器警告(warn_on 输出尽可能多的警告信息)或者关闭(warn_off 编译器会输出尽可能少的警告信息);还可以用来配置要 Qt 加载库,例如如果要用到 Qt 的多线程,则:CONFIG += qt thread,再例如配置 debug 或 release 模式
CONFIG += debug_and_release
CONFIG(debug,debug|release)
{
TARGET = hello
DESTDIR = ./debug
}
else
{
TARGET = hello
DESTDIR = ./release
}
CONFIG += console c++11 network
QT 是跨平台的,在不同的平台上用同一个 pro 文件,要加入有关平台的信息
windows 平台是 win32,Linux 平台是 unix
win32:LIBS+= ./mitab/mitab_i.lib
unix:LiBS+= ./mitab/libmitab.so
可以通过在其它任何一个变量的变量名前加 $$ 来把这个变量的值分配给当前的变量
#将DEFINE的值分配给MY_DEFINES
MY_DEFINES= $$DEFINE