QT .pro文件使用解析

 更新时间:2022年04月12日 10:36:24   作者:Mr.codeee  
QT工程的pro文件,在创建工程时由QTCreater自动创建,我们可以往里面添加内容,增加库文件的声明,包含路径、预处理器定义,生成目录,输出中间目录等等设置,本文就来介绍一下

1.pro文件的作用

QT工程的pro文件,在创建工程时由QTCreater自动创建,我们可以往里面添加内容,增加库文件的声明,包含路径、预处理器定义,生成目录,输出中间目录等等设置。

2.一个简单的示例

QT+= core gui charts
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
TARGET = qcharts
TEMPLATE = app
 
DEFINES += QT_DEPRECATED_WARNINGS
 
SOURCES += \
        main.cpp \
        mainwindow.cpp \
    mylineseries.cpp \
    myvalueaxis.cpp
 
HEADERS += \
        mainwindow.h \
    mylineseries.h \
    myvalueaxis.h
 
FORMS += \
        mainwindow.ui \
    mylineseries.ui \
    myvalueaxis.ui
  • QT:指定所要使用的Qt模块
  • TARGET:指定编译后生成的目标文件名称
  • TEMPLATE:指定编译后生成app 还是 lib
  • DEFINES:预定义预处理器符号
  • SOURCES:当前工程中的C++源文件
  • HEADERS:当前工程中的C++头文件
  • FORMS:当前工程中的ui文件

以上是一个简单的示例所用到的配置选项。还有一些常用的别的配置选项如下。

  • VERSION:目标库版本号
  • DESTDIR:指定最终文件生成的目录
  • UI_DIR:UIC将ui转化为头文件所存放的目录
  • RCC_DIR:RCC将qrc文件转化为头文件所存放的目录
  • MOC_DIR:MOC命令将含Q_OBJECT的头文件转换为标准的头文件存放的目录
  • RC_FILE:程序中所用到的图片等资源文件
  • LIBS:指定工程要链接的库路径
  • INCLUDEPATH:指定工程要加载的头文件路径
  • CONFIG:工程配置和编译的参数
  • LIBPATH:指定工程要链接的库路径
  • INSTALLS:指定make install后程序的目录

3.指定链接的三方库

CONFIG(debug, release|debug){
  win32:QCPLIB = qcustomplotd2
  else: QCPLIB = qcustomplotd
} else {
  win32:QCPLIB = qcustomplot2
  else: QCPLIB = qcustomplot
}
 
INCLUDEPATH += ../thirdPart
LIBS += -L../thirdPart -l$$QCPLIB

也可以这样写

CONFIG(debug, release|debug){
  win32:QCPLIB = qcustomplotd2
  else: QCPLIB = qcustomplotd
} else {
  win32:QCPLIB = qcustomplot2
  else: QCPLIB = qcustomplot
}
 
INCLUDEPATH += ../thirdPart
LIBPATH += ../thirdPart
LIBS += -l$$QCPLIB

4.编译为库

4.1静态库

TEMPLATE = lib 
CONFIG += staticlib

4.2动态库

去掉CONFIG += staticlib这一行

5.指定debug,release,win32平台还是别的平台

省略号,自己补足内容

CONFIG(debug, release|debug){
  win32:...
  else:...
} else {
  win32:...
  else:...
}

例:指定win32和unix的库路径

win32:LIBS+= libavformat.lib
unix:LiBS+= libavformat.so

6.判断编译环境是x86架构还是arm架构

contains(QT_ARCH, arm64){
    message("arm64") #在这里处理arm64所需
}else{
    message("x86")
}

以上可以组合使用,如下。

CONFIG += debug_and_release
CONFIG(debug, debug|release){  //处理debug
    win32{
    }
    unix{
        contains(QT_ARCH, arm64){
            message("arm64")
            }else{
            message("x86")
            }
    }
}else{     //处理release
    win32{
    }
    unix{
    }
}

7.在linux下编译后指定make install后的文件路径

target.path = /home/admin1/target
 
#需要拷贝的文件以及拷贝目地位置
conf.path = /home/admin1/target
conf.files += \
    ../config.ini \
    ../sqlite.db \
 
INSTALLS += target conf

上述描述的是,在终端编译完成后,执行make install,生成的可执行文件会拷贝到/home/admin1/target 这个路径下,../config.ini   ../sqlite.db,一个配置文件和一个数据库文件也会拷贝到/home/admin1/target路径下。

到此这篇关于QT .pro文件使用解析的文章就介绍到这了,更多相关QT .pro文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Cocos2d-x UI开发之菜单类使用实例

    Cocos2d-x UI开发之菜单类使用实例

    这篇文章主要介绍了Cocos2d-x UI开发之菜单类使用实例,本文的代码中含有详细注释,需要的朋友可以参考下
    2014-09-09
  • 基于C++实现掷双骰游戏的示例代码

    基于C++实现掷双骰游戏的示例代码

    在最流行的博彩游戏中有一种名为“掷双骰”(craps)的骰子游戏,这种游戏在世界各地的娱乐场所和大街小巷非常受欢迎。本文将用C++语言实现这一游戏,需要的可以参考一下
    2022-03-03
  • C语言popen函数调用其他进程返回值示例详解

    C语言popen函数调用其他进程返回值示例详解

    这篇文章主要为大家介绍了C语言popen函数调用其他进程返回值示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 关于C语言指针赋值的问题详解

    关于C语言指针赋值的问题详解

    本篇文章是对C语言指针赋值的问题进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 浅谈c语言中一种典型的排列组合算法

    浅谈c语言中一种典型的排列组合算法

    下面小编就为大家带来一篇浅谈c语言中一种典型的排列组合算法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 数据结构顺序表操作示例

    数据结构顺序表操作示例

    这篇文章主要介绍了数据结构顺序表操作示例,其中有在第I个元素前插入数据x,元素从0开始计数、删除第i个元素,元素从0开始计数的方法,需要的朋友可以参考下
    2014-03-03
  • C++实现万年历功能

    C++实现万年历功能

    这篇文章主要为大家详细介绍了C++实现万年历功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • C语言中字符串与各数值类型之间的转换方法

    C语言中字符串与各数值类型之间的转换方法

    这篇文章主要介绍了C语言中字符串与各数值类型之间的转换方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C++中引用(&)的用法与应用实例分析

    C++中引用(&)的用法与应用实例分析

    引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用
    2013-09-09
  • C++使用宏函数实现单例模板详解

    C++使用宏函数实现单例模板详解

    在我们日常开发中,无可避免需要使用单例模式进行设计类对象。这篇文章主要介绍了如何使用宏函数实现单例模板,感兴趣的小伙伴可以了解一下
    2023-02-02

最新评论