一.Qt pro项目文件属性介绍
Qt项目的
.pro
文件是项目管理文件,用于记录项目设置和组织管理项目包含的文件。以下是一些主要属性及其介绍:
- QT: 指定项目使用的Qt模块。例如,
QT += core gui
表示项目中加入core和gui模块。如果使用到数据库操作,则需要添加sql模块,如QT += sql
。- greaterThan(QT_MAJOR_VERSION, 4): 这是一个条件判断,用于检查Qt版本。如果Qt的主版本号大于4,则执行后面的语句。例如,
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
表示如果Qt版本大于4,则添加widgets模块。- TARGET: 指定生成的目标文件名,通常与项目名称相同。
- TEMPLATE: 指定项目的模板类型,如app表示创建应用程序。
- SOURCES: 列出项目中所有的源文件,可以使用相对路径或绝对路径,并且可以包含空格和特殊字符。例如,
SOURCES += \main.cpp \widget.cpp
表示项目中包含main.cpp和widget.cpp两个源文件。- HEADERS: 列出项目中所有的头文件,使用方法与SOURCES类似。
- FORMS: 列出项目中所有的表单文件,通常与用户界面设计相关。
- DEFINES: 用于预处理器定义,如
DEFINES += QT_DEPRECATED_WARNINGS
表示定义了QT_DEPRECATED_WARNINGS宏。- INCLUDEPATH: 指定额外的头文件搜索路径。
- LIBS: 指定项目需要链接的外部库。
- CONFIG: 用于设置编译配置选项,如释放模式或调试模式。
- qmldir: 这个文件用于模块化管理QML文件。在QML项目中,
qmldir
文件定义了QML模块的名称、版本和包含的QML文件。它通常位于QML文件的根目录中,并且其内容指示了如何加载和使用QML模块。- DISTFILES: 这个属性列出了在构建安装包时需要分发的文件列表。这些文件通常是除了项目生成的可执行文件和库文件之外的其他文件,如配置文件、资源文件等。
- CONFIG: 此属性用于指定工程配置和编译参数。例如,可以设置是否编译调试版本的可执行文件或库文件。
CONFIG
变量可以影响编译器的行为,比如开启或关闭某些特定的编译选项。- DLLDESTDIR: 指定目标库文件放置的目录。这在构建项目时非常有用,尤其是当需要将库文件放置在非标准目录时。
- DESTDIR: 指定可执行文件放置的目录。这与
DLLDESTDIR
类似,但用于可执行文件而非库文件。- RESOURCES: 列出项目中的资源文件,这些资源文件会被编译进最终的可执行文件中,可以通过Qt的资源系统在程序中访问。
- TRANSLATIONS: 指定项目中使用的语言翻译文件。这对于国际化(i18n)和本地化(l10n)非常重要,允许应用程序支持多种语言。
二. Qt pro项目文件属性使用示例
#引用平台文件及项目描述文件
include(../../platform.pri)
include(manager_view.pri)#TEMPLATE: 指定项目的模板类型,如app表示创建应用程序、lib表示库文件
TEMPLATE = lib#TARGET: 指定生成的目标文件名,通常与项目名称相同
TARGET = manager_view#QT: 指定项目使用的Qt模块。例如,QT += qml quick sql表示项目中加入qml、quick和数据库模块
QT += qml quick charts core websockets multimedia network svguri = rc.qt.ManagerView
#DISTFILES: 这个属性列出了在构建安装包时需要分发的文件列表。
#这些文件通常是除了项目生成的可执行文件和库文件之外的其他文件,如配置文件、资源文件等。
DISTFILES = qmldir#DEFINES: 用于预处理器定义,如DEFINES += QT_DEPRECATED_WARNINGS表示定义了QT_DEPRECATED_WARNINGS宏
DEFINES += RC_LOG_MODEL_NAME=hmilogger#库文件版本号及库文件名称设置
VERSION = 1.0.0.20230918
QMAKE_TARGET_PRODUCT = "manager_view"
RC_LANG = 0x0004#CONFIG: 用于设置编译配置选项。more mem for resources
CONFIG += resources_bigCONFIG += qtquickcompiler skip_target_version_ext#CONFIG: 此属性用于指定工程配置和编译参数。
#例如,可以设置是否编译调试版本的可执行文件或库文件
CONFIG(debug, debug | release){SHUCHUDIR = debug
}else{SHUCHUDIR = release
}#自定义变量
PLUGROOT = RcPlugins#自定义dll输出目录
win32{#DLLDESTDIR: 指定目标库文件放置的目录。DLLDESTDIR = $$DLLDESTDIR/$$PLUGROOT/$$replace(uri, \., /)#LIBS: 指定项目需要链接的外部库LIBS += $$PWD/../../../lib/$$TARGET_PLATFORM/$$SHUCHUDIR/unit_settings.libLIBS += $$PWD/../../../lib/$$TARGET_PLATFORM/$$SHUCHUDIR/qtqrencode.libCOPYTODIR = $$DLLDESTDIR
}else{#DESTDIR: 指定可执行文件放置的目录DESTDIR = $$DESTDIR/$$PLUGROOT/$$replace(uri, \., /)#LIBS: 指定项目需要链接的外部库LIBS += -L$$PWD/../../../bin/$$TARGET_PLATFORM/$$SHUCHUDIR -lunit_settingsLIBS += -L$$PWD/../../../bin/$$TARGET_PLATFORM/$$SHUCHUDIR -lqtqrencodeCOPYTODIR = $$DESTDIR
}#HEADERS: 列出项目中所有的头文件
HEADERS += \$$PWD/../src/onlineupdate.h \$$PWD/../src/settings.h#SOURCES: 列出项目中所有的源文件,可以使用相对路径或绝对路径,并且可以包含空格和特殊字符
SOURCES += \$$PWD/../src/onlineupdate.cpp \$$PWD/../src/settings.cpp#RESOURCES: 列出项目中的资源文件,这些资源文件会被编译进最终的可执行文件中,
#可以通过Qt的资源系统在程序中访问。
RESOURCES += \rc_device_manager_view.qrc#TRANSLATIONS: 指定项目中使用的语言翻译文件。
#这对于国际化和本地化非常重要,允许应用程序支持多种语言
TRANSLATIONS += ./RcConfigFiles/RcLanguage/manager_cn.ts \./RcConfigFiles/RcLanguage/manager_en.ts \./RcConfigFiles/RcLanguage/manager_ru.ts \#INCLUDEPATH: 指定额外的头文件搜索路径
INCLUDEPATH += $$PWD/../../../include/qtqrencode \$$PWD/../../../include/curl \$$PWD/../../../include#_PRO_FILE_PWD_代表工程文件(.pro文件)所在的目录路径
#而$$COPYTODIR代表将要复制到的目标目录
#如果这两个变量的值不相等,那么条件表达式的结果为真,否则为假。
#主要进行资源文件复制:在构建过程中,可能需要将一些资源文件复制到输出目录
!equals(_PRO_FILE_PWD_, $$COPYTODIR) {copy_qmldir.target = $$COPYTODIR/qmldir #会自动将qmldir文件复制到构建输出目录中。这样,应用程序就可以正确地加载和使用QML模块了。copy_qmldir.depends = $$_PRO_FILE_PWD_/qmldircopy_qmldir.commands = $(COPY_FILE) "$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)" "$$replace(copy_qmldir.target, /, $$QMAKE_DIR_SEP)"QMAKE_EXTRA_TARGETS += copy_qmldirPRE_TARGETDEPS += $$copy_qmldir.target
}qmldir.files = qmldir
unix {installPath = $$[QT_INSTALL_QML]/$$replace(uri, \., /)qmldir.path = $$installPathtarget.path = $$installPathINSTALLS += target qmldir
}
知识点补充:
Qt项目的
.pro
文件中,可以使用DEFINES
关键字来定义自定义变量。这些变量可以在项目中的其他部分使用,例如在源代码中引用它们或在构建过程中使用它们。
要定义一个自定义变量,请按照以下步骤进行操作:
- 打开您的Qt项目的
.pro
文件。- 在文件中找到适当的位置,通常是在文件的开头或结尾处。
- 添加以下行来定义自定义变量:
//pro文件
DEFINES = MY_VARIABLE//现在,您可以在项目中的其他部分使用这个自定义变量。例如,在源代码中,您可以使用以下方式引用它:
//cpp文件
#ifdef MY_VARIABLE// 使用MY_VARIABLE变量的代码
#endif