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.因公司的服务器在内网,访问外网时要通过代理,所以在很 ...
 
随机推荐
- SprinBoot-SpringData-整合
			
目录 SpringData 整合JDBC JDBCTemplate 整合Druid 配置数据源 配置Druid数据源监控 整合MyBatis 整合测试 整合Redis 测试整合 序列化配置 自定义re ...
 - Storm近年的发展
			
storm作为第一款大数据领域的流式计算引擎,在2013年推出之后风头一时无二.后续虽然有spark streaming也作为流式计算的引擎,但storm依然在流式计算的江湖占有稳定的地位.直到201 ...
 - Java中使用jxl.jar将数据导出为excel文件
			
Java对Excel文件的读写操作可由jxl.jar或poi.jar实现,这里使用jxl.jar完成对Excel文件的导出. 一.将Excel文件导出在本地 步骤: 创建文件 -> 创建 ...
 - vue-cli3项目中使用vue-ueditor-wrap
			
Vue + UEditor + v-model 双向绑定 一.安装 1 npm i vue-ueditor-wrap 2 # 或者 3 yarn add vue-ueditor-wrap 二.下载文件 ...
 - Eclipse中快速生成Javabean的方法
			
总结一下: 先写出属性 无参构造器:Alt+/ 再按回车 全参构造器:Alt+Shift+S 再按字母O键 再按回车 toString方法:Alt+Shift+S 再按字母S键 再按回车 get/se ...
 - 【简单数据结构】链表--洛谷P1160
			
题目描述 一个学校里老师要将班上NN个同学排成一列,同学被编号为1\sim N1∼N,他采取如下的方法: 先将11号同学安排进队列,这时队列中只有他一个人: 2-N2−N号同学依次入列,编号为i的同学 ...
 - pyqt5设计无边框窗口(一)
			
import sys from PyQt5 import QtGui,QtCore from PyQt5 import QtCore, QtGui, QtWidgets ############### ...
 - Win10删除电脑3D对象等7个文件夹
			
把下面几个注册表项依次删除掉 "图片"文件夹:[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Expl ...
 - python二级   之  第 五套
			
1. 这里要注意输入的 就是列表 . [1,2,3] 2. 就是你要明白 random.seed() 产生随机种子# 与random.randint() 取 ...
 - [RabbitMQ]下载&安装
			
RabbitMQ是基于Erlang语言开发的消息中间件,所以使用RabbitMQ需要安装Erlang和RabbitMQ两个软件. 1 Erlang 1.1 下载 官网下载地址:https://www. ...