qmake是一个帮助在不同平台上简化编译步骤的工具,她是来自Trolltech,qmake能够自动生成Makefile 使得只需要少量的信息就可以创建相应的Makefile,qmake能用于很多的软件工程,不管该软件工程是否是用qt写的.
qmake能生成Makefile主要是以工程文件里面的信息为基础.工程文件是开发者创建的,通常是很简单的.但是一些复杂的工程需要创建复杂的工程文件文件,qmake包含别的特性来支持qt开发.自动的包含uic和moc的编译规则.qmake也可以生成Microsoft Visual studio的工程文件而不要求开发者改变qt的工程文件
Getting Started 开始把
qmake指南 和 qmake 常用工程 提供了浏览,以便帮助新手开始qmake的使用
下面的就是连接了…
-
qmake Tutorial qmake指南
- Starting off Simple 从简单易懂开始
- Making an Application Debuggable 使得程序可调试
- Adding Platform-Specific Source Files 添加特殊平台的源文件
- Stopping qmake If a File Doesn’t Exist 停止qmake如果文件不存在
- Checking for More than One Condition 检查更多条件
-
qmake Common Projects
-
Building an Application 编译成可执行程序
- The app Template app模板
-
Building a Library 编译成库
- The lib Template 库模板
-
Building a Plugin 编译成插件
- Building a Qt Designer Plugin 编译成qt designer的插件
-
Building and Installing in Debug and Release Modes 调试模式和发布模式的编译和安装
- Building in Both Modes 两种模式同时编译
- Installing in Both Modes 两种模式同时安装
-
Building an Application 编译成可执行程序
qmake指南
本指南教导你怎么使用qmake,我们建议你看完了本指南后去阅读一下qmake用户手册
从简单易懂的开始
我们假设你完成了一个你的程序基本文件建立.比如下面的文件
- hello.cpp
- hello.h
- main.cpp
你可以在你的qt的安装目录的examples/qmake/tutorial里面找到这些文件.首先使用一个你喜欢的编辑器创建一个叫hello.pro的文件,第一件你要做的事情是添加一行字 来告诉qmake 关于头文件和源文件是你的工程的组成部分
我们将先添加源文件到工程文件,你需要使用SOURCES 变量来做这件事情.新起一行写上 SOURCES += 后面跟着hello.cpp 例如
SOURCES += hello.cpp
我们重复做同样的事情 来添加源文件到工程文件里面,最后就成了下面的样子
SOURCES += hello.cpp
SOURCES += main.cpp
如果你喜欢使用Makefile的语法风格,可以写成下面的形式
SOURCES = hello.cpp \
main.cpp
现在源文件已经列在了工程文件里面了,接下来添加头文件,他们也是用同样的方法添加,不同的是变量名是HEADERS
做了这步的话,我们的工程文件应该是下面的样子了
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
一般情况下编译出来的目标的名字自动设置成跟工程文件名一样的名字,但是根据不同的系统加上了适当的后缀名,比如,你的工程文件名叫hello.pro那么目标在windows就是hello.exe而在Unix就是hello,如果你想使用一个不同的名字,你可以在工程文件名里面加入以下设置
TARGET = helloworld
最后的一个步骤就是设置 CONFIG 变量 由于这是一个qt的程序,我们需要把qt加入到CONFIG变量里面 以便qmake能够添加相关需要链接的qt的库和确保moc和uic能包含到将要生成的Makefile里面
最后看到的完成的工程应该是下面的样子了
CONFIG += qt
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
现在你可以使用 qmake来生成你的程序需要的Makefile了,在命令行里面到你的工程所在的目录输入以下的:
qmake -o Makefile hello.pro
接着输入make还是nmake 就依赖你的编译器了,如果是vs或者vc的就输入nmake,否则就输入make
对于Visual Studio使用者qmake 还可以生成 .dsp 或者.vcproj 文件 例如:
qmake -tp vc -o hello.dsp hello.pro
使得程序可调试
一个Release版本的程序没有包含任何调试符合或者其他的调试信息,在开发过程中,给程序提供调试版本的的相关信息是十分有用的.在工程文件里面的CONFIG加上debug就可以轻松做到了,例如
CONFIG += qt debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
用qmake作用上面的的工程文件生成Makefile,你就会可以在调试环境中获取你程序运行时有用的调试信息
添加平台相关的源文件
当你编码了一段时间后,你的程序可能要做一些平台相关的东西,并且决定保持平台相关的代码独立性.因此你要做成2个新的文件来包含到你的pro文件, hellowin.cpp and hellounix.cpp 我们不能都把这2个文件添加到SOURCES变量中啊,因为将会在Makefile文件里面包含这2个文件啊.所以,我们要做的就是使用一个域的东西来使得qmake能处理这样的平台相关的问题.
假如在Windows下,一个简单的域像下面那样添加进去
win32 {
SOURCES += hellowin.cpp
}
因此,如果是在Windows下运行qmake,就把hellowin.cpp添加到源文件链表里面,如果在别的平台运行qmake,就会忽略他.那么剩下来要做的就是创建一个unix平台相关的域了.
当你做完了,你的pro文件应该像下面看到的样子了
CONFIG += qt debug
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
win32 {
SOURCES += hellowin.cpp
}
unix {
SOURCES += hellounix.cpp
}
像前面一样,使用qmake来生成Makefile
如果文件不存在停止qmake
如果某写特定的文件不存在,你可能想不要创建Makefile了,我们可以通过使用exists()函数检查一个文件是否存在,我们使用error()函数可以停止qmake 的处理进程.这些都是域的做法一样.只不过用函数简单的替代域.检查main.cpp文件的例子如下:
!exists( main.cpp ) {
error( “No main.cpp file found” )
}
!符号是用来否定的,例如,如果main.cpp文件存在则exists( main.cpp )结果为真.如果文件不存在!exists( main.cpp )结果则为真
CONFIG += qt 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的话,你就会看到一条消息并且qmake停止处理
多条件的检查
假如你使用Windows系统,你希望当运行程序的时候,能在命令行里面看到qDebug()输出的打印语句.除非你使用一些控制台设置来编译你的程序,否则你是看不到输出的.在CONFIG变量中加入 console ,Window系统的Makefile就会有控制台的设置了,要说清楚的是,我们只想在windows系统和debug也已经添加到CONFIG里面的时候才添加控制台,这就要求两层域了,先创创建一个域,然后在里面创建另外一个域,添加设置到最里面的的域,如下
:
win32 {
debug {
CONFIG += console
}
}
嵌套的域可以用冒号来连接起来,所以最有的工程的样子就是下面的了
CONFIG += qt 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 Common Projects
本章节讲述为3种不同类型的基于Qt的工程设置pro文件,尽管所有的工程有很多相同的变量,但是他们每个使用工程属性相关的变量来定制输出文件.
平台专门的变量不在这里讲述, 我们建议读者去 Deploying Qt Applications 获取相关的信息,如 building universal binaries for Mac OS X 和handling Visual Studio manifest files.
-
Building an Application 编译一个可执行程序
- The app Template app模板
-
Building a Library 编译一个库
- The lib Template 库模板
-
Building a Plugin 编译一个插件
- Building a Qt Designer Plugin 编译一个Qt Designer使用的插件
-
Building and Installing in Debug and Release Modes 调试模式和发布模式的编译和安装
- Building in Both Modes 以上两种模式的编译
- Installing in Both Modes 以上两种模式的安装
编译一个可执行程序
app模板
app模板告诉qmake生成的Makefile是将要编译一个可执行程序,使用这个模板,应用程序的类型可以添加下面的选项到CONFIG变量中
选项 |
描述 |
windows |
程序是Window平台的界面程序 |
console |
App模板专用: 程序是Window平台控制台程序 |
当你使用这个模板,以下的一些qmake变量是能用的,你可以在pro文件使用这些变量来配置你的应用程序需要的相关的信息
- HEADERS –程序中需要编译的头文件列表.
- SOURCES -程序中需要编译的源文件列表.
- FORMS – 由Qt Designer为程序创建的ui文件列表(qte2是INTERFACES).
- LEXSOURCES – 程序用到的所有的lex 源文件列表.
- YACCSOURCES -程序用到的所有的yacc 源文件列表.
- TARGET –可执行程序的名字.默认是跟工程文件名一样 (根据不同的平台后缀名会自动添加).
- DESTDIR –可执行文件的发布目录.
- DEFINES – 程序编译时候需要的预定义的列表
- INCLUDEPATH –程序需要的头文件的目录列表.
- DEPENDPATH –程序搜索的依赖路径.
- VPATH – 查找supplied 文件的搜索路径(我还没有弄懂~_~).
- DEF_FILE – Windows 平台专用: 程序需要用到的.def .
- RC_FILE - Windows 平台专用: 程序的资源文件.
- RES_FILE - Windows 平台专用: 程序需要连接的资源文件.
你只需要使用已经设置了值的系统变量,例如,如果你没有任何额外的头文件路径 INCLUDEPATH就不用在设置什么了,qmake会自动加入qt自身需要的默认的路径,例如一个pro文件的例子可能是下面的样子
TEMPLATE = app
DESTDIR = c:/helloapp
HEADERS += hello.h
SOURCES += hello.cpp
SOURCES += main.cpp
DEFINES += QT_DLL
CONFIG += qt warn_on release
如果条目是单独的值,如模板或者发布目录,我们使用=,但书如果条目是多值的,我们就使用+= 来添加该类型需要添加的东西,用= 来使用条目新值比如 我们使用了DEFINES=QT_DLL,所有其他的预定义就会被删除
al
相关推荐
### qmake 手册(初级部分):基础知识与实践指南 #### 一、qmake简介 **qmake** 是一个跨平台的构建工具,由 **Trolltech**(现为 **Qt Group**)开发,旨在简化不同操作系统上的编译过程。它通过分析项目文件(....
尽管给出的部分内容似乎是乱码,但可以推测这部分内容可能涉及到了qmake手册中的一些具体用法或者示例代码。例如,其中提到了“ $? K ”、“5”、“321465 5738”等字符串,这些可能是示例中的变量名或占位符,用于...
qmake用户手册,感兴趣的朋友,可以下载看看,不需要资源分
### qmake用户手册知识点概述 #### 一、qmake简介 **qmake** 是由 Trolltech 公司(现 Qt Group)开发的一款自动化构建工具,主要用于简化跨平台项目的 Makefile 创建过程。它允许开发者通过创建一个简单的项目...
qmake使用手册 qmake是Trolltech公司创建的用于生成Makefile的工具,可以根据不同的平台和编译器书写Makefile。使用qmake,开发者可以创建一个简单的项目文件,并且运行qmake生成适合的Makefile。qmake会注意所有的...
qmake的介绍 qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。 手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile。使用qmake,开发者创建一个...
本文将深入探讨`qmake`、Qt对象模型以及Qt Designer,这些都是QT开发中的关键概念。 首先,我们来理解`qmake`。`qmake`是Qt的一个项目管理工具,它自动生成Makefile或其他构建系统支持的文件,使得编译Qt应用程序变...
【qmake使用手册】 qmake是由Trolltech公司...详细的手册会进一步解释项目文件的每个部分以及更多高级用法,包括如何处理预处理器宏、编译标志、资源文件等。了解并熟练使用qmake,将极大提升Qt开发的效率和便捷性。
`qmake`是Qt的一部分,它根据`.pro`文件生成Makefile或项目文件,这些文件可以被各种编译器(如`nmake`,`mingw32-make`,或者Xcode)理解和执行。而`cmake`是一个独立于IDE的构建系统,它通过读取`.cmake`脚本来...
在Makefile和qmake中,这些步骤会被自动化管理,开发者只需要指定源文件、头文件和库,工具会自动处理其余部分。 **4. Makefile与qmake的比较** - **灵活性**: Makefile提供了极高的灵活性,但编写和维护起来相对...
在手册的高级使用部分,讨论了如何利用qmake的预编译头文件特性来优化构建过程,尤其是当你有多个源文件需要引用一组相同的头文件时,预编译头文件可以显著减少编译时间。 手册中还介绍了qmake的变量和函数系统。...
在使用Qt开发环境时,有时会遇到`qmake`找不到的问题。这通常是因为系统路径设置不正确,或者Qt的安装路径未被系统识别。本文将详细介绍如何解决`qmake`找不到的问题。 首先,当在终端输入`qmake -v`时,如果出现`...
Qt5.14.2交叉编译配套qmake.conf文件
QXMPP库是一个用C++编写的轻量级、易于使用的XMPP框架,它与Qt库紧密结合,利用qmake构建系统,方便在Qt环境中开发XMPP应用。这个源码包特别提到了使用qmake版本,意味着它适用于那些已经安装了Qt和Visual Studio...
### qmake使用指南详解 #### 一、qmake概述与作用 qmake是Qt框架下的一款强大且灵活的构建工具,旨在简化Qt应用程序的编译流程。它通过解析跨平台的`.pro`文件来生成特定于操作系统的Makefile,从而自动化处理编译...
QT和Qmake是Qt框架中的两个重要组成部分,用于软件开发。Qt是一个跨平台的应用程序开发框架,支持多种操作系统,如Windows、Linux、macOS等。它提供了丰富的图形用户界面(GUI)工具包,使得开发者可以方便地创建出...
在软件开发领域,Qt是一个非常流行的跨平台应用程序开发框架,而qmake和Qt Creator是Qt开发环境中的两个重要工具。本教程将深入探讨这两个工具的使用,帮助开发者更好地理解和利用它们进行高效开发。 **qmake简介**...