翻译qmake文档 目录

 
      本教程教讲授qmake基础知识。这个手册里的其它专题包含更详细的使用qmke信息。
从简单开始
     假设你已经完成了应用程序的基本实现,并且你创建了下边的文件:
    hello.cpp
hello.h
main.cpp
qt分布的目录 examples/qmake/tutorial 中,你可以找到这些文件。你只需要知道的另一件事是这个程序的安装程序是用Qt写的。首先,用你最喜欢的文本编辑工具,在examples/qmake/tutorial目录下建立hello.pro文件,第一件你需要做的事就是要添加一些代码,告诉qmak
哪些源文件和头文件是项目的一部分。
我们先把源文件添加到项目中,想要这样做你需要使用SOURCES变量。只需要用SOURCES +=新起一行再把hello.cpp写它后边。写完后的效果是这样:
SOURCES += hello.cpp
我们把项目里的每一个源文件都重复这样做,直到我们以如下方式结束:
SOURCES += hello.cpp
SOURCES += main.cpp
如果你喜欢使用Make-like语法,一口气列出所有的文件,你可以使用使用换行符,就像下边一样
SOURCES = hello.cpp \
main.cpp
现在已经列出项目里所有的源文件,头文件也必需添加.添加头文件除了使用名称为HEADERS的变量外和添加源文件的方式是一样的。
    这样做后,你的项目文件看起来应该是这样的:
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
Target名称是自动设置的。它和项目名称是一样的,但会根据相关平台相添加后缀名,举个例子,如果这个项目文件叫hello.pro,这个目标在window平台上是hello.exe,在Unix平台上是hello。如果你想用不同的名字可以在项目文件里设置:
TARGET = helloworld
最后一步是设置CONFIG变量。因为这是Qt应用程序,我们需要把qt添加到CONFIG行,这样qmake会把相关的库连接,可以确保moc和uic构建行能包含到生成的Makefile里。
完成的项目文件应该像下面一样:
 CONFIG += qt
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
现在你可以为你的应用程序用qmake生成Makefile,在命令行里你项目目录下,写入命令行:
qmake -o Makefile hello.pro
然后根据你用的编译器输入make或者nmake.
对于使用Visual Studio用户,qmake也可以生成.dsp或者.vcproj,例如 :
qmake -tp vc hello.pro
可调试应用程序
     release版本的应用程序不包含任何debug符号和debug信息,开发期间给应用程序生成debug版本的相关信息是非常有用的。在项目文件里的CONFIG变量加上debug就可以轻松实现。
例如:
 CONFIG += qt debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
像之前一样使用qmake生成makefile,当你在debug环境下运行应用程序的时候你会得到很有用的信息
 
添加平台特有的源文件
     写几个小时的代码后,你也许会开始为你的应用程序编写特定平台的部分,并坚持对不同的平台编写不能的代码。现在你有两个新文件要包含到项目中:hellowin.cpp和hellounix.cpp。当我们想把这两个文件放到Makefile里,不能只把这些文件添加到SOURCES变量。所以,我们需要做的是根据qmake运行的当前平台用使用相应的作用域进行处理。
将一个简单的作用域添加到依赖于windows平台的文件,就像下边这样:
win32 {
SOURCES += hellowin.cpp
}
所以如果qmake运行于window平台,它将把hellowin.cpp添加到源文件列表。如果qmake运行于其它平台,它会被简单的忽略。现在剩下需要做的事就是创建一个特定于Unix文件的作用域。
当你做完这些,你的项目看起来应该是这样的:
 CONFIG += qt debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
就像之前一个使用qt生成Makefile
如果一个文件不存在,停止 qmake
如果某个文件不存在,你也许不希望生成Makefile。我们可以用exists()方法检查一个文件是否存在。用error()方法我们可以停止正在运行的qmake.这和作用域的工作方式是一样的。用这个方法简单的替换作用域条件。像下面一样检查main.cpp文件:
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
“!”是用来否定测试。像这样, exists(main.cpp)如果是ture那么这个文件存在,如果!exists(main.cpp)是ture那么这个文件不存在。

CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
像之前一样使用qmake生成makefile。如果你临时重命名main.cpp,你将看到错误信息,qmake也会停止运行
多条件检查
假设你使用windows系统,当你运行程序的时候,想在命令行里看到qDebug()语句输出。要想看到输出,你必需用适当的控制台设置构建你的应用程序。我们可以简单的把console加入到CONFIG行,window平台的makefile里包含这个设置。然而,假设我们只想运行在window平台时并且debug已经添加到CONFIG行时才把console添加CONFIG行。这需要两个嵌套的作用域。先创建一个作用域,在它里面再创建另一个。把需要处理的设置放在第二个作用域里,像这样:
win32 {
debug {
CONFIG += console
}
}

嵌套作用域可以使用冒号:连接在一起。最终的项目文件像下边一样:
CONFIG += debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
!exists( main.cpp ) {
error( "No main.cpp file found" )
}
win32:debug {
CONFIG += console
}

就是这样,你现在已经完成了qmake的教程,准备好开始为你的开发项目编写项目文件吧。

翻译qmake文档(二) Getting Started的更多相关文章

  1. 翻译qmake文档 目录

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

  2. 翻译qmake文档(四) Building Common Project Types

    翻译qmake文档 目录 本章原英文文档:http://qt-project.org/doc/qt-5/qmake-common-projects.html 构建常见的项目类型        本章描述 ...

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

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

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

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

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

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

  6. Google翻译PDF文档

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

  7. 基于Zabbix API文档二次开发与java接口封装

    (继续贴一篇之前工作期间写的经验案例) 一.           案例背景 我负责开发过一个平台的监控报警模块,基于zabbix实现,需要对zabbix进行二次开发. Zabbix官方提供了Rest ...

  8. MongoDB文档(二)--查询

    (一)查询文档 查询文档可以使用以下方法 # 以非结构化的方式显示所有的文档 db.<collectionName>.find(document) # 以结构化的方式显示所有文档 db.& ...

  9. 自动化翻译ceph文档

    需求很简单,翻译官网的操作文档 下载ceph代码luminous版本 这个只用来编译doc的,我们只需要最新的这个分支即可,拉最少的代码 git clone -b v12.2.13 --single- ...

随机推荐

  1. 编译hadoop2.6.0

    具体情况比较曲折:hadoop2.6.0编译不过 错误如下: 这个kms模块始终编译不过,最后得出结论国内的aliyun maven仓库有问题, 在编译hadoop2.2.0 可以通过,因为这个版本的 ...

  2. Linux多线程同步方式

    当多个线程共享相同的内存时,需要确保每个线程看到一致的数据视图,当多个线程同时去修改这片内存时,就可能出现偏差,得到与预期不符合的值.为啥需要同步,一件事情逻辑上一定是有序的,即使在并发环境下:而操作 ...

  3. JVM知识点

    先发个链接到两位大牛的主页 http://rednaxelafx.iteye.com/               http://icyfenix.iteye.com/ 目录 1)概述 2)编译 3) ...

  4. Highcharts使用简例 + 异步动态读取数据

    第一部分:在head之间加载两个JS库. <script src="html/js/jquery.js"></script> <script src= ...

  5. [原]openstack-kilo--issue(六):Authorization Failed: The resource could not be found. (HTTP 404)

    =======1.问题点:====== 在安装调试openstack-kilo版本的时候,使用keystone endpoint-list的时候出现了问题. 如下: [root@controller ...

  6. JQuery入门——进度条

    越来越觉得常规javascript已经跟不上节奏了,打算学点进阶的,从JQuery学起. JQuery是一个Javascript库,可以从JQuery.com下载,放到本地,用 <script ...

  7. ELF Format 笔记(九)—— Elf32_Sym 结构的 st_value 和 st_shndx 成员

    ilocker:关注 Android 安全(新手) QQ: 2597294287 前面的笔记中提到过 Elf32_Sym 结构,本篇笔记再写一下其中的 st_value 和 st_shndx 成员. ...

  8. spring为什么不能注入static变量

    Spring 依赖注入 是依赖 set方法 set方法是 是普通的对象方法 static变量是类的属性 @Autowired private static JdbcTemplate jdbcTempl ...

  9. oracle操作之传输表空间

    一.传输表空间概述 什么是传输表空间,传输表空间技术始于oracle9i,不论是数据字典管理的表空间还是本地管理的表空间,都可以使用传输表空间技术:传输表空间不需要在源数据库和目标数据库之间具有同样的 ...

  10. 理解 OpenStack Swift (1):OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置

    本系列文章着重学习和研究OpenStack Swift,包括环境搭建.原理.架构.监控和性能等. (1)OpenStack + 三节点Swift 集群+ HAProxy + UCARP 安装和配置 ( ...