翻译qmake文档 目录

本章原英文文档:http://qt-project.org/doc/qt-5/qmake-common-projects.html

构建常见的项目类型
 
     本章描述如何设置基于Qt的应用程序、库和插件的三种常见项目类型的qmake项目项目文件。虽然所有的项目类型使用大量相同的变量,但是它们中的每一个都使用项目特定的变量来自定义输出文件。
     这里不会描述特定于平台的变量。更多详细修改请查看  Qt for Windows - Deployment 和 Qt for Mac OS X.
绑定一个应用程序
 
     app模板告诉qmake生成将要构建应用程序的Makefile.使用这个模板,可以用下边的任何一个选项添加到CONFIG变量定义来指定应用程序的类型:
 
选项 描述
windows 这个应用程序是一个window Gui应用程序
console 仅限于应用程序模板:这个应用程序是一个windows控制台应用程序
testcase 应用程序是一个自动化测试
 
 
当使用这个模板时,下面的qmake系统变量可以被识别。你可以在.pro文件里使用这些变量指定应用程序相关的信息。
 
HEADERS -应用程序头文件的列表。
SOURCES -应用程序c++源文件的列表。
FORMS - 应用程序UI文件的列表(用Qt Designer创建的)
LEXSOURCES -应用程序Lex 源文件的列表
YACCSOURCES - 应用程序Yacc 源文件的列表
TARGET - 应用程序可执行文件的名称。它默认是项目文件的名称。(如果需要扩展名,会自动添)
DESTDIR - 存放目标可执行程序的文件夹 。
DEFINES - 应用程序需要的额外添加的预处理定义列表。
INCLUDEPATH - 应用程序所需要的额外包含路径列表。
DEPENDPATH - 应用程序所依赖的搜索路径。
VPATH - 用于找到提供文件的搜索路径
DEF_FILE - 只用于windows :应用程序要链接的.def文件
RES_FILE - 只用于windows :应用程序的资源文件。
RES_FILE - 只用于windows :应用程序要链接的资源文件。
     你只需要使用你有值的系统变量。例如,如果你没有额外的 INCLUDEPATH那么就不需要指定它。qmake将会自动添加必须的默认值。一个示例项目文件可能像下边这样
 
TEMPLATE = app
DESTDIR = c:/helloapp
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
DEFINES += USE_MY_STUFF
CONFIG += release
 
     由于这些项都是单值,像模板或目标目录,我们使用“=”;但对于多值我们使用 "+=" 来添加到现有类型项。使用“=”用新值替换变量的值。例如,如果我们这样写DEFINES=USE_MY_STUFF,其它的所有定义都会被删除
构建测试用例
     一个测试用例项目是用于作为一个自动测试运行的app项目。通过添加testcase到CONFIG变量可以把任何app标记为测试用例。
     对于testcase项目,qmake会在生成的Makefile里插入一个检查目标。这个目标将会运行这个应用程序。如果它终止退出代码等于0这个测试被认为通过。
     检查目标会通过自动递归SUBDIRS项目。这意味着它可能会发出一个使检查命令从SUBDIRS项目内部来运行一个完整的测试套件。
     检查目标的运行可能会被一些Makefile变量自定义。这些变量是
 
变量 描述
TESTUNNER 在每个测试命令前添加一个命令或shell片段。例如, use-case 是一个 “timeout" 用于如果它在一个指定的时间内没有完成,将被终止测试。
TESTARGS 每附加到每个测试命令的附加参数。例如,它可能有用的传递附加参数从测试设置输出文件和格式化。(就像 QTestLib支持的 -o filename,format选项)
注意: 当调用make工具而不是在.pro文件里,这些变量必须被设置。大多数make工具支持在命令行直接设置Makefile变量
 
# Run tests through test-wrapper and use xunitxml output format.# In this example, test-wrapper is a fictional wrapper script which terminates# a test if it does not complete within the amount of seconds set by "--timeout".# The "-o result.xml,xunitxml" options are interpreted by QTestLib.
make check TESTRUNNER="test-wrapper --timeout 120" TESTARGS="-o result.xml,xunitxml"
测试用例项目可以在CONFIG选项中使用下面的配置,更进一步的自定义设置。
选项 描述
insignificat_test 在检查期间测试退出代码将被忽略
 
     测试用例会被经常使用 QTest 或 TestCase编写,但这并不需要使用 CONFIG+=testcase 和 make check。 唯一主要的需要是测试程序以零退出代码为成功,用非零退出表示失败。
 
构建库
 
lib模板告诉qmqke生成一个将要构建一个库的makefile。当使用这个模板,除了app模板支持的的系统变量,也支持VERSION变量。在你的.pro文件里使用这些变量指定这个库的相关信息。     
     当使用lib模板时,下边的选项可以添加到CONFIG变量来确定构建库的类型:
选项 描述
dll 这个库是一个共享库(dll).
staticlib 这个库是一个静态库。
plugin 这个库是一个插件。
也可以定义下边的选项用来提供库的附加信息。
 VERSION - 目标库的版本号。如例 2.3.1
     库的目标文件名是依赖于平台的。例如,在X11和Mac OS X,库的名字将用lib作为前缀。在windows平台,文件名没有前缀。
     构建插件
     使用lib库来构建插件,就像前一章描述的一样。这用来告诉qmake为工程生成一个Makefile, 将为每一个平台构建一个适当的插件,通常以库的形式。与普通的库一样,VERSION变量指定插件的信息。

 VERSION - 目标库的版本号. 如 2.3..
构建Qt Designer 插件
使用一组特定的配置设置来构建Qt Designer插件,这些配置依赖于系统对Qt的配置。为了方便,通过在QT变量里添加designer来启动这些设置。例如:

QT +=  widgets designer
基于插件项目的更多示例,请查看 Qt Designer Examples
在Debug和Release模式下构建和安装
有时,它是必要在debug和release两种模式下构建一个项目。尽管CONFIG变量可以同时保存debug和release两个选项,但是只有最后指定的选项会被应用。
在两种模式下构建
     为了启动项目在两种模式下均构建,你必须把 debug_and_release 选项添加到CONFIG变量:
CONFIG += debug_and_release

CONFIG(debug, debug|release) {
TARGET = debug_binary
} else {
TARGET = release_binary
}
上面的代码片段作用域修改在每个模式下的构建目标用来确保结果目标拥有不同的名字。为目标提供不同的名字确保两者不会被彼此覆盖。
当使用qmake处理项目文件时。它将会生成一个makefile规则,用以允许项目在两种模式下构建。可以通过下面的方式调用:
make all
在项目文件里可以把build_all选项添加到CONFIG变量,用来确保项目默认是在两种模式下生成:
CONFIG += build_all

这样允许Makefile可以使用默认的规则处理
make

在两种模式下安装
build_all选项确保在安装规则被调用时将安装指向的两个目标版本:
make install
也可以根据目标平台自定义构建目标的名字。例如,一个库或插件可以在windows和Unix平台使用不同的命名习惯。
CONFIG(debug, debug|release) {
mac: TARGET = $$join(TARGET,,,_debug)
win32: TARGET = $$join(TARGET,,d)
}
在上面代码片段的默认行为是修改在debug模式下进行构建生成的目标名字。可以把else语句添加到作用域用于在release模式下做同样的事。目标名字未被修改,保持原样。

翻译qmake文档(四) Building Common Project Types的更多相关文章

  1. 翻译qmake文档 目录

    利用空闲时间把qmke的文档翻译出来,翻译水平有限,有些地方翻译的不好,请谅解, 如果您能指出来,我会很感激并在第一时候做出修改. 翻译qmake文档(一) qmake指南和概述 翻译qmake文档( ...

  2. 翻译qmake文档(三) Creating Project Files

    翻译qmake文档 目录   原英文文档:http://qt-project.org/doc/qt-5/qmake-project-files.html   创建项目文件 项目文件包含qmake构建你 ...

  3. 翻译qmake文档(一) qmake指南和概述

    翻译qmake文档 目录 英文文档连接: http://qt-project.org/doc/qt-5/qmake-manual.html http://qt-project.org/doc/qt-5 ...

  4. 翻译qmake文档(二) Getting Started

    翻译qmake文档 目录 原英文文档: http://qt-project.org/doc/qt-5/qmake-tutorial.html         本教程教讲授qmake基础知识.这个手册里 ...

  5. 翻译qmake文档 目录(四篇)

    http://www.cnblogs.com/li-peng/p/4026133.html

  6. 中文翻译:pjsip文档(四)之ICE Session的使用方法

    1:pjsip教程(一)之PJNATH简介 2:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介 3:pjsip教程(三)之ICE ...

  7. Google翻译PDF文档

    Google翻译PDF文档 翻译软件虽多如牛毛,但有关整段/全文翻译,堪用的软件极少, 涉及专业技术的文献.胜任翻译工作的人力稀缺.少不了project师讴心沥血. 由于多是PDF格式.即使要翻译个概 ...

  8. c#中操作word文档-四、对象模型

    转自:http://blog.csdn.net/ruby97/article/details/7406806 Word对象模型  (.Net Perspective) 本文主要针对在Visual St ...

  9. 【swupdate文档 四】SWUpdate:使用默认解析器的语法和标记

    SWUpdate:使用默认解析器的语法和标记 介绍 SWUpdate使用库"libconfig"作为镜像描述的默认解析器. 但是,可以扩展SWUpdate并添加一个自己的解析器, ...

随机推荐

  1. Java Maps的9个常见问题

    一般来说,Map是一种由键值对组成的数据结构,其中键(key)在Map中是不能重复的: 本篇文章总结了9个最常见的问题(关于Java Map及其实现类): 出于简单考虑,在代码例子中我将不使用泛型,因 ...

  2. 单元测试中如何配置log4net

    按道理来说,单元测试中基本没有对于日志的需求,这是由于单元测试的定位来决定的. 因为单元测试的思想就是针对的都是小段代码的测试,逻辑明确,如果测试运行不通过,简单调试一下,就能很容易地排查问题.但是单 ...

  3. pentaho cde数据联动,下拉框,文本框,图形

    先看一下效果: 开源bi工具pentaho数据联动,和传统意义上的更改数据不同,pentaho cde 需要一个监听来动态传值. 说一下需要注意的几个地方吧 1.参数是不能在两个图表中直接传递的,必须 ...

  4. MySQL锁问题

    MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎 采用的是表级锁:BDB存储引擎采用的是页面锁,但也支持表级锁:InnoDB存储引擎 ...

  5. mysql-5 数据检索(3)

    计算字段 如果想在一个字段中既显示公司的名称,又显示公司的地址,但是这两个信息一般包含在不同的表列中 城市.州和邮政编码存储在不同的列中,但是邮件标签打印程序却需要把它们作为一个恰当格式的字段检索出来 ...

  6. HDFS

    1.HDFS shell 1.0查看帮助 hadoop fs -help <cmd> 1.1上传 hadoop fs -put <linux上文件> <hdfs上的路径& ...

  7. 深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点

    深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 2011-12-28 23:00 by 汤姆大叔, 139489 阅读, 119 评论, 收藏, 编辑 才华横溢的 ...

  8. 使用dwr时动态生成table的一个小技巧

    这篇随笔是我在07年写的,因为当时用了自己建设的blog,后来停止使用了,今天看到备份数据库还在,恢复出来放到这里.留着记录用. 我在使用DWR时,试了很多次都无法在动态生成的table中的一个或多个 ...

  9. 烂泥:高负载均衡学习haproxy之TCP应用

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 在前几篇文章中,我们介绍了haproxy的配置参数,而且配置例子都是http协议(7层应用)的. 这篇文章,开始介绍haproxy的4层TCP应 ...

  10. 烂泥:Linux系统与windows系统文件同步

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上篇文章中,我们介绍了有关Linux系统之间的文件同步,这篇文章我们来介绍下,有关Linux系统与windows系统,以及windows系统与windo ...