QMake(Qt项目构建)
qmake工具能够简化不同平台上的项目构建。可以自动产生Makefiles文件,仅仅需要少量的信息就可以生成Makefile文件。同时qmake也可以构建不是Qt的项目。qmake基于项目文件中的信息产生Makefile。qmake有一些支持Qt开发的额外特性,自动包含构建moc和uic的规则。qmake也可以生成一个VS工程。
qmake工具提供了一个面向工程的系统,来管理应用、库和其它组件的构建流程。这种方法使您能够在单个文件内,控制所使用的源文件,并对流程中的每个步骤简明地描述。qmake扩展为Makafile来执行必要的编译和链接命令。
一、 简单的项目构建
使用qtcreator创建一个简单的工程,查看其pro文件:
1 QT += core gui
2
3 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
4
5 TARGET = untitled
6 TEMPLATE = app
7
8
9 SOURCES += main.cpp\
10 mainwindow.cpp
11
12 HEADERS += mainwindow.h
13
14 FORMS += mainwindow.ui
二、 主要参数介绍
1、TARGET:目标文件名。
2、TEMPLATE:生成的工程类型。
app缺省类型,应用;lib库类型;subdirs在子文件夹中构建目标。
3、CONFIG项目的配置和编译选项。
release :release模式。
debug:debug模式。
debug_and_release:debug和release模式。
debug_and_release_target:缺省选项。设置了debug_and_release模式,将在各自目录分开编译。
build_all:如果选中了debug_and_release选项,缺省以debug和release两种模式构建。
autogen_precompile_source 自动生成包含预编译头文件a.cpp。
ordered 按顺序编译。
precompile_header 支持预编译头的使用。
warn_on
warn_off
exceptions 缺省。
exceptions_off
rtti 缺省。
rtti_off
stl 缺省。
stl_off
thread 当CONFIG包含qt时,缺省使用。
c++11 编译器不支持c++11时,不影响。
4 、HEADERS 头文件。
5、SOURCES源文件。
6、FORMS ui文件。
7、RESOURCES 资源文件。
8、LIBS 项目需要链接的库 -L指定库路径 -l指定库。
9、INCLUDEPATH 包含文件路径。
10、DESTDIR 目标文件路径。
11、OBJECTS_DIR 中间文件路径。
12、MOC_DIR moc文件路径。
13、UI_DIR ui文件路径。
14、RCC_DIR 资源文件路径。
三、构建一个大型工程实例
大型工程可能由多个动态库项目构成,首先需要构建一个总的pro,然后再构建各个动态库项目。
1、总的pro。如下面所示,模板选择subdirs,SUBDIRS添加各个子pro文件,ordered按照顺序进行编译。
TEMPLATE = subdirs SUBDIRS + = ../a/a.pro \
../b/b.pro \
../c/c.pro CONFIG + =debug_and_release ordered
2、单个动态库项目构建。
可以将构建文件分为.pro和.pri,在pri里面写
头文件、源文件、UI文件以及资源文件等信息,pro文件里面写配置信息,在pro文件中包含pri。如下所示:
1)target.pri文件
HEADERS + = aa.h \
bb.h
SOURCES + = aa.cpp \
bb.cpp
FORMS + = aa.ui
2)target.pro文件
TEMPLATE = lib
TARGET = target
QT += cor gui xml
DEFINES + = _DEBUG
INCLUDPATH + = . \
./../../core
LIBS + = -lcore
UI_DIR += ./GeneratedFiles
RCC_DIR += ./GeneratedFiles
inlude(target.pri)
CONFIG += debug_and_release plugin
CONFIG(debug,debug|release){
DESTDIR = ../../bin/Debug
MOC_DIR += ./GeneratedFiles/Debug
INCLUDEPATH += ./GeneratedFiles/Debug
OBJECT_DIR += Debug
LIBS += -L../../../bin/Debug -L../../../lib, -Wl,rpath-link,../../../bin/Debug
}
CONFIG(release,debug|release){
DESTDIR = ../../bin/Release
MOC_DIR += ./GeneratedFiles/Release
INCLUDEPATH += ./GeneratedFiles/Release
OBJECT_DIR += Release
LIBS += -L../../../bin/Release -L../../../lib -Wl, rpath-link, ../../../bin/Release
}
QMake(Qt项目构建)的更多相关文章
- 基于Cmake+QT+VS的C++项目构建开发编译简明教程
目录 一.工具下载与安装 1. Qt 2. Visual Studio 2015 3. Cmake 二.C++及Qt项目构建 1. 基于VS构建Qt项目 2. ...
- 用CMake 构建Qt 项目
译:用CMake构建Qt项目作者: Johan Thelin 译者:赖敬文原链接:http://developer.qt.nokia.com/quarterly/view/using_cmake_t ...
- 在Qt项目中添加全局宏变量来达到按方案编译的目的
遇到一个需求,需要根据不同需要编译所需程序,本人采用了在QtCreator中建立不同的构建设置,配合宏的方式来实现: 1.在项目-构建设置中,添加构建配置2.在构建步骤里的qmake中的额外参数一栏填 ...
- 使用VisualStudio2015开发QT项目
一直习惯用VS,做QT项目时,不停的来回切IDE有些不方便.研究了一下QT的编译. 实际QT编译的机制和cmake是相同的,QT的IDE使用pro文件进行项目管理.QMake通过解析pro工程文件,生 ...
- 配置CLion管理Qt项目国际化支持
随着Qt 6的发布,cmake也正式宣告接管qmake的工作了. 在之前的一篇博客里我介绍了如何使用cmake管理你的qt项目,不过有一点我没有讲,那就是对国际化(i18n)的处理. 今天我们就来介绍 ...
- Hello World程序演示Qt项目的建立、编译、运行和发布
一.Qt项目的建立 1.选择项目模板. 选择"文件-->新建文件或工程",在选择模板页面选择Qt C++项目中的"Qt Gui应用"一项,然后单击&quo ...
- 创建Qt项目
创建Qt项目 1 创建Qt项目 2.1 使用向导创建 打开Qt Creator 界面选择 New Project或者选择菜单栏 [文件]-[新建文件或项目]菜单项 弹出New Project对 ...
- qt利用QT designer构建第一个界面helloworld工程
qt利用QT designer构建第一个界面helloworld工程原创ZJE_ANDY 发布于2017-04-07 20:25:28 阅读数 6613 收藏展开第一步:点击New Project 第 ...
- 在Redhat上为.Net 项目构建基于Jenkins + Github + Mono 的持续集成环境
在Redhat enterprise 6.5 的服务器上,为在gutub 上的 .net 项目构建一个持续集成环境,用到了Jenkins和mono.因公司的服务器在内网,访问外网时要通过代理,所以在很 ...
随机推荐
- python库--tensorflow--io操作
方法 返回值类型 参数 说明 .train.Saver() 实例s var_list=None 指定被保存和恢复的变量 dict: {name: 变量} list: [变量] None: 所有save ...
- 计算机基础知识以及java JDK、JRE
计算机 计算机(Computer)全称:电子计算机,是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备.由硬件和软件所组成,没有安装任何软件的计算机称为裸机.常见的形式有台式计算机.笔 ...
- 自定义组件 v-model 的使用
关于自定义组件如何使用 v-model,本章直讲如何使用: 一. $emit('input', params) // 父组件中 <template> <article> {{f ...
- 如何画UML,几种简单的模型分析
如何画UML 前言 UML 类 类的关系 1.依赖关系 2.继承关系 3.实现关系 4.关联关系 5.聚合关系 6.组合关系 总结 参考 如何画UML 前言 最近在学习设计模式,其中不免涉及到 UML ...
- PHP的OpenSSL加密扩展学习(二):非对称加密
上篇文章,我们了解了关于对称和非对称加密的一些相关的理论知识,也学习了使用 OpenSSL 来进行对称加密的操作.今天,我们就更进一步,学习 OpenSSL 中的非对称加密是如何实现的. 生成私钥 通 ...
- 对象赋值在PHP中到底是不是引用?
之前的文章中,我们说过变量赋值的问题,其中有一个问题是对象在进行变量赋值的时候,直接就是引用赋值.那么到底真实情况是怎样呢? 之前变量赋值的文章 PHP的变量赋值 对象引用测试 在继续深入的学习PHP ...
- Centos8.X 搭建Prometheus+node_exporter+Grafana实时监控平台
Prometheus Promtheus是一个时间序列数据库,其采集的数据会以文件的形式存储在本地中,因此项目目录下需要一个data目录,需要我们自己创建,下面会讲到 下载 下载好的.tar.gz包放 ...
- redis的安装与设置开机自启动
redis 的安装配置: 可以直接去官网下载((https://redis.io/download) 解压文件到指定目录下 tar zxvf redis-5.0.7.tar.gz -C /opt/ ...
- 51nod1836-战忽局的手段【期望dp,矩阵乘法】
正题 题目连接:http://www.51nod.com/Challenge/Problem.html#problemId=1836 题目大意 \(n\)个点\(m\)次随机选择一个点标记(可以重复) ...
- pytest环境准备与入门
前言pytest 是 python2 默认自带的,python3 的版本 pytest 框架独立出来了,需用 pip 安装.以下为 python3.7版本为例 pytest是python的一种单元测试 ...