文章目录

  • 用法详解
    • 1. 注释
    • 2. 模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:
    • 3. 指定生成的应用程序放置的目录
    • 4. 指定生成的应用程序名
    • 5. 配置信息
    • 6. 平台相关性处理
  • 注意点 LIBS += 用法
    • 注意:
    • 附《msvc、mingw分别编译动态库与静态库文件名区别》:

在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下:

用法详解

1. 注释

从“#”开始,到这一行结束。

2. 模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:

TEMPLATE = app
A> app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
B> lib - 建立一个库的makefile。
C> vcapp - 建立一个应用程序的VisualStudio项目文件。
D> vclib - 建立一个库的VisualStudio项目文件。
E> subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。

3. 指定生成的应用程序放置的目录

DESTDIR += ../bin

4. 指定生成的应用程序名

TARGET = pksystem

5. 配置信息

CONFIG用来告诉qmake关于应用程序的配置信息。

CONFIG+= qt warn_on release

在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项是更安全的。
A> qt部分告诉qmake这个应用程序是使用Qt来连编的。这也就是说qmake在连接和为编译添加所需的包含路径的时候会考虑到Qt库的。
B> warn_on部分告诉qmake要把编译器设置为输出警告信息的。
C> release部分告诉qmake应用程序必须被连编为一个发布的应用程序。在开发过程中,程序员也可以使用debug来替换release

指定uic命令将.ui文件转化成ui_*.h文件的存放的目录

UI_DIR += forms

指定rcc命令将.qrc文件转换成qrc_*.h文件的存放目录

RCC_DIR += ../tmp

指定moc命令将含Q_OBJECT的头文件转换成标准.h文件的存放目录

MOC_DIR += ../tmp

#指定目标文件(obj)的存放目录

OBJECTS_DIR += ../tmp

#程序编译时依赖的相关路径

DEPENDPATH += . forms include qrc sources

#头文件包含路径

INCLUDEPATH += .

#信息输出

message($$PWD)
message($$DESTDIR)
message($$TARGET)

#源文件编码方式

CODECFORSRC = GBK
#工程中包含的头文件
HEADERS += include/painter.h
#工程中包含的.ui设计文件
FORMS += forms/painter.ui
#工程中包含的源文件
SOURCES += sources/main.cpp sources/painter.cpp
#工程中包含的资源文件
RESOURCES += qrc/painter.qrcLIBS += -L folderPath  //引入的lib文件的路径  -L:引入路径
Release:LIBS += -L folderPath // release 版引入的lib文件路径
Debug:LIBS += -L folderPath // Debug 版引入的lib 文件路径
DEFINES += XX_XX_XXX  //定义编译选项,在.h文件中就可以使用 :#ifdefine xx_xx_xxx
RC_FILE = xxx.icns

6. 平台相关性处理

我们在这里需要做的是根据qmake所运行的平台来使用相应的作用域来进行处理。为Windows平台添加的依赖平台的文件的简单的作用域看起来就像这样:

win32 {undefined
SOURCES += hello_win.cpp }

====================================================================================================================
当你已经创建好你的项目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的项目文件那里然后输入:

Makefile可以像这样由“.pro”文件生成:

qmake -o Makefile hello.pro

对于VisualStudio的用户,qmake也可以生成“.dsp”文件,例如:

qmake -tp vc xxx.pro

当TEMPLATE =subdirs 时,

qmake -r -tp vc xxx.pro

注意点 LIBS += 用法

用法:LIBS += -Lzzz -lxxx -lyyy
zzz:库路径
xxx、yyy:库文件

库路径可以有以下的形式:

-L.            表示 .pro所在目录
-L$$_PRO_FILE_PWD_/  表示 .pro所在目录
-L$$PWD/    表示 .pro所在目录
-LC:/abc/     表示C:/abc/

库文件可以有以下的形式:

若.pro所在目录lib下有解码库需要被链接,msvc版本为“VideoDecoder.lib”,mingw版本为“libVideoDecoder.a”。

  1. 不加-l时,需要写库文件全名:
LIBS += -L$$PWD/lib VideoDecoder.lib

LIBS += -L$$PWD/lib libVideoDecoder.a

这样写死,不利于多编译器编译,不推荐。

  1. 加-l时,可以将不同编译器库文件名差异屏蔽掉

假设链接msvc库,则只需要去掉文件后缀(一般是.lib):

LIBS += -L$$PWD/lib -lVideoDecoder

假设链接mingw/gcc库,则需要去掉文件前缀"lib",和后缀(一般是.a):

LIBS += -L$$PWD/lib -lVideoDecoder

这样不管在哪个编译器下,都能保证命令一致。

注意:

请牢记msvc库只去后缀,mingw库去前缀和后缀。

因为我遇到一个问题,使用msvc编译工程,工程中调用了boost线程库,boost使用msvc编译为静态库,这个静态线程库

的名字比较坑“libboost_thread-vc141-mt-gd-x64-1_71.lib”,按照我们一贯的想法,肯定是去掉前lib,去掉后缀.lib,像这样:

LIBS += -LC:/Boost_msvc_static/lib/ -lboost_thread-vc141-mt-gd-x64-1_71

死活编译不过,找不到库文件。此时,你只要想起来链接msvc库只去后缀,像这样:

LIBS += -LC:/Boost_msvc_static/lib/ -llibboost_thread-vc141-mt-gd-x64-1_71

编译就通过了。

附《msvc、mingw分别编译动态库与静态库文件名区别》:

msvc动态库:test.dll,test.lib
msvc静态库:test.lib
mingw动态库:test.dll、libtest.a
mingw静态库:libtest.a

Qt 之 pro文件介绍及注意点相关推荐

  1. Qt 中pro文件换行注意的问题

    Qt 中pro文件换行必须用  \,直接按回车换行会导致程序不正确.如下: CONFIG(debug, debug|release) {OBJECTS_DIR += $$PWD/../debugDES ...

  2. 深入理解Qt的.pro文件

    深入理解Qt的pro文件 模板变量 生成目录 生成的应用程序名 编译选项 目标文件目录 包含头文件 包含源文件 包含资源文件 附加头文件包含 链接库 预编译宏 平台相关性处理 指定来自ui文件位置 指 ...

  3. Qt中pro文件如何从相对路径导入库

    Qt中pro文件如何从相对路径导入库 Qt工程中有lib.dll.a.so等文件需要导入时,有时需要指定路径.指定绝对路径换到其他机器编译时会不大方便.那么,如何在Qt pro文件中通过相对路径导入库 ...

  4. qt中.pro文件详细说明

    工程上需要使用QT框架进行项目开发,.pro文件里面的具体配置方式比较模糊.详细整理文件里各配置项的含义,并对其编写方法进行归纳总结. 目录 1.配置项说明 1.1.注释 # 1.2.添加/排除QT项 ...

  5. [qt creator]pro文件的设置

    1. 怎么使exe输出到指定目录 DESTDIR =$$PWD/../bin 2.QT中默认不选中Shadow build设置方法 3.test.pro文件常用的设置 TEMPLATE = app C ...

  6. 【QT】震惊,一个由于QT只有.pro文件引起的世界难题。本文解决QT只有.pro的问题以及在项目中添加文件时,发生了一个编码错误的问题。

    震惊,一个由于QT只有.pro文件引起的世界难题!! 新手必看,避雷!!!不要相信网上那些人,他们文章中看不中用,正所谓印证了网络上的一句话:一人创作,万人模仿啊.和某手某音差不多!!# 概述:问题的 ...

  7. QT中PRO文件写法的详细介绍

    在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: 1. 注释 从"#"开始,到这一行结束. 2.模板变量告诉q ...

  8. QT中PRO文件写法的详细介绍,很有用,很重要!

    在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下: 1. 注释 从"#"开始,到这一行结束. 2.模板变量告诉q ...

  9. Qt中 .pro 文件和 .pri 文件介绍

    *.pro 这是一个典型的Qt示例程序的.pro文件(propriprfprl.pro): TEMPLATE = app CONFIG += QT QT += core guiTARGET = pro ...

最新文章

  1. Sql — CTE公用表表达式和With用法总结
  2. Java中的split函数
  3. 2021-05-10 如何修改Docker的默认镜像存储位置
  4. C# 调用cmd执行指令
  5. Windows 2008之Hyper-V安装攻略
  6. 有哪些适合大学生浏览的网站?
  7. iOS-入门HelloWorld
  8. HAUT校赛--某科学的打麻将
  9. c#读取生成excel表格文件xls、xlsx格式文件
  10. 手游反抗战兴起,《原神》打响“起义“第一枪
  11. timesten mysql_TimesTen进程种类详解
  12. 金域医学与华为云联合,AI辅助宫颈癌筛查方案获得阶段性突破
  13. Hulugans看什么 | 50多部迪士尼经典动画片带你重温童年
  14. 大学物理实验长度的测量实验报告_大学物理实验长度测量法实验报告完整版
  15. html5 基本知识
  16. 36-sparkstreaming
  17. 2020-03-18HTML
  18. ESP8266设置静态IP入网
  19. sentinel 控制台讲解-降级规则-降级策略:RT
  20. Ubuntu系统---安装搜狗输入法

热门文章

  1. TIA Portal面向对象编程入门
  2. Neural Turing Machines-NTM系列(三)ntm-lasagne源码分析
  3. 如何制订工作计划与工作目标?
  4. h5页面输入框在安卓手机上被键盘挡住
  5. Django模型中的关系:一对一、一对多与多对多
  6. xnio-nio解决方法
  7. VBA多条件选择及自动填表及计算汇报
  8. 图像的二值化原理和实现
  9. Java开发编码规范
  10. 华中科技大学计算机与网络,华中科技大学计算机通信与网络实验报告-基于NS2的协议分析实验...