欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > Qt 的.pro文件配置详解

Qt 的.pro文件配置详解

2025/5/15 23:43:20 来源:https://blog.csdn.net/weixin_44629261/article/details/147955062  浏览:    关键词:Qt 的.pro文件配置详解


一、简介
1、在Qt项目里,.pro文件是项目文件。
2、.pro文件用于配置Qt项目的构建过程。
3、配置.pro文件,实现对Qt工程全生命周期的控制,精准把控从编译优化到部署策略,是构建企业级Qt应用的必备核心技能。

二、基础配置
1、TEMPLATE
(1)、指定项目的模板类型。
(2)、常用的类型有:
    a、app: 用于创建可执行应用程序。(一般.pro文件中未指定TEMPLATE,默认就是创建应用程序)
    b、lib: 用于创建库文件,可细分为静态库和动态库。
           1)、静态库: 
              TEMPLATE = lib  
              CONFIG += staticlib
           2)、动态库:
              TEMPLATE = lib 
    c、subdirs: 用于管理多个子项目(生成makefile文件编译SUBDIRS指定的子文件夹)。
           1)、例如,TestSubDirs目录下,有两个子项目Project1和Project2(且子目录名和子项目文件同名),TestSubDirs.pro内容如下:
              TEMPLATE = subdirs
              
              SUBDIRS += \
                  Project1 \
                  Project2
                  
2、TARGET
(1)、指定生成的目标文件的名称。
(2)、例如: TARGET = MyApp。

3、DESTDIR和DLLDESTDIR
(1)、DESTDIR指定目标文件(.dll、.lib、.pdb、.exp、.ilk)的构建目录,没有会自动生成。
(2)、DLLDESTDIR指定将目标文件(.dll)单独复制到的目录,没有会自动生成。
(3)、注意,若使用当前目录,则需测试当前目录是哪个目录,自测试当前目录"./"是makefile所在的目录。

4、VERSION
(1)、指定应用程序或库的版本号。
(2)、例如: VERSION = 1.0.0.0 。
(3)、右键点击应用程序exe或dll-->属性-->详细信息,看到文件版本和产品版本就变为了1.0.0.0。

5、DEFINES、DEFINES_DEBUG、DEFINES_RELEASE
(1)、DEFINES将此变量的值添加为编译器预处理器宏。
(2)、DEFINES_DEBUG定义Debug配置的预处理器宏。
(3)、DEFINES_RELEASE定义Release配置的预处理器宏。
(4)、例如,DEFINES += USE_MY_STUFF 。

6、QT
(1)、添加模块。
(2)、例如: QT += core gui widgets network 。

三、文件

1、HEADERS
(1)、列出项目中所有的头文件(.h)。
(2)、例如:
HEADERS += \
    mainwindow.h

2、SOURCES
(1)、列出项目中所有的源文件(.cpp)。
(2)、例如:
SOURCES += \
    main.cpp \
    mainwindow.cpp
    
3、FORMS
(1)、列出项目中所有的ui文件(.ui)。
(2)、例如:
FORMS += \
    mainwindow.ui
    
4、RESOURCES
(1)、列出项目中所有的资源文件(.qrc)。
(2)、例如:
RESOURCES += \
    MyApp.qrc
    
5、resources.files
(1)、列出项目中所有的qml文件(.qml)。
(2)、例如: resources.files = main.qml ./qml/MyFirst.qml
(3)、注意,若向工程中添加自定义qml文件,会被增加到DISTFILES字段,如: DISTFILES += /qml/MyFirst.qml,但构建会报错,需要手动添加到resources.files中。
(4)、自定义QML文件名首字母要大写,以表明这是一个QML类型。

6、INCLUDEPATH 
(1)、给编译器指明头文件的搜索路径,代码中#include时可以找到相应的文件。
(2)、例如: INCLUDEPATH += $$PWD/MyDll 。

7、LIBS
(1)、指定链接时库文件的搜索路径和要链接的库名。
(2)、例如: LIBS += -L$$PWD/MyDll -lMyDll
(3)、-L指定库文件的搜索路径; -l指定要链接的库名(不加.lib)。

四、其它
1、CONFIG
(1)、CONFIG指定了编译器所要使用的选项和所要连编的库。
(2)、以下是一些选项:
    release
    debug
    debug_and_release
    build_all
    ordered
    warn_on
    warn_off
(3)、以下是一些连编的库:
    qt
    C++11、C++14、C++17、C++20
    thread
    x11
    windows
    console
    dll
    staticlib
    plugin
    qml_debug
(4)、用"+="、"-="来添加、去除包含。
(5)、CONFIG(debug, debug | release)
    第一个参数是要判断的active选项,第二个参数是互斥选项的集合。
    CONFIG可以同时定义debug和release,但只有一个处于active状态。
    例如:
        CONFIG(debug, debug | release) {
            LIBS += -lopencv_core2413d
        }
        CONFIG(release, debug | release) {
            LIBS += -lopencv_highgui241
        }

2、平台条件判断
(1)、例如:
    win32 {    
        SOURCES += windows_utils.cpp
    }
    unix:!macx {    
        SOURCES += linux_utils.cpp
    }
    macx {    
        SOURCES += mac_utils.cpp
    }
(2)、以上是根据平台添加不同的文件

3、contains
(1)、contains用于检查某个字符串是否包含另一个字符串。
(2)、例如:
    contains(QT, gui) {
        message("Qt GUI module is enabled")
        # 如果启用了Qt GUI模块,则执行这里的代码
    } else {
        message("Qt GUI module is not enabled")
    }
    
4、exists
(1)、exists()函数可以检查某个文件或目录是否存在。
(2)、例如:
    exists(path/to/debug_feature.h) {
        HEADERS += path/to/debug_feature.h
        SOURCES += path/to/debug_feature.cpp
    } else {
        message("Debug feature header not found.")
    }

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词