重庆整合营销网站建设,长沙网络推广代理,wordpress镜像搭建,wordpress主题哪个好QMake 使用概述一、概述二、简单开始三、使应用程序可调试1. 添加平台特定的源文件2. 如果文件不存在#xff0c;停止qmake3. 检查多个条件一、概述
本教程教你qmake的基础知识。qmake 其实就是一个自动化编译的流程控制文件#xff0c;也是Qt程序的生成makefile的工具…
QMake 使用概述一、概述二、简单开始三、使应用程序可调试1. 添加平台特定的源文件2. 如果文件不存在停止qmake3. 检查多个条件一、概述
本教程教你qmake的基础知识。qmake 其实就是一个自动化编译的流程控制文件也是Qt程序的生成makefile的工具qmake 其实就是来解析 Qt Pro文件的一个程序基本上我们主要还是通过 编写 pro 工程文件然后调用 qmake 命令来生成Makefile 最后生成可执行文件的过程。qmake 其实就是和 cmake 一样的生成一个Makefile 的工具。只是qmake 是qt 提供的一个跨平台 生成Makefile的软件我一般也是用 qmake 多些因为更简单些。
二、简单开始
让我们假设您刚刚完成了应用程序的基本实现并创建了以下文件:
hello.cpphello.hmain.cpp
我们需要做的第一件事是添加告诉 qmake 作为开发项目一部分的源文件和头文件的行。
即是通过设置一些变量来完成的。
我们首先将源文件添加到项目文件中。为此您需要使用 SOURCES 变量。只需用 SOURCES 开始新一行并在其后加上hello.cpp。你应该有这样的东西:
SOURCES hello.cpp我们可以对项目中的每个源文件重复这一步骤直到得到如下结果:
SOURCES hello.cpp
SOURCES main.cpp如果你更喜欢使用类似make的语法你可以使用换行转义就像这样:
SOURCES hello.cpp \main.cpp既然源文件已经在项目文件中列出那么必须添加头文件。添加这些文件的方式与源文件完全相同只是我们使用的变量名是 HEADERS。
一旦你这样做了你的项目文件应该看起来像这样:
HEADERS hello.h
SOURCES hello.cpp
SOURCES main.cpp生成的目标名称将自动设置。它与项目文件名相同但具有适合于平台的后缀。例如如果项目文件名为 hello.pro 在Windows上目标是hello.exe在Unix上目标是hello。
如果你想使用不同的名称你可以在项目文件中通过 TARGET 来设置这个可执行文件名叫 helloworld :
TARGET helloworld完成的项目文件应该是这样的:
HEADERS hello.h
SOURCES hello.cpp
SOURCES main.cpp下面生成这些的命令我们可以了解就行基本上我们都是在GUI的Qt Creator IDE下开发我们只需要点击 运行 按钮就能运行出结果啦。
现在可以使用qmake为应用程序生成Makefile。在命令行中在项目目录中键入以下命令:
qmake -o Makefile hello.pro然后根据你使用的编译器输入make或nmake。
对于Visual Studio用户qmake还可以生成Visual Studio项目文件。例如:
qmake -tp vc hello.pro三、使应用程序可调试
应用程序的发布版本不包含任何调试符号或其他调试信息。在开发过程中生成具有相关信息的应用程序的调试版本是很有用的。通过向项目文件中的 CONFIG 变量添加 debug 可以轻松实现这一点。
例如:
CONFIG debug
HEADERS hello.h
SOURCES hello.cpp
SOURCES main.cpp像以前一样使用qmake生成Makefile。现在在调试环境中运行应用程序时您将获得有关应用程序的有用信息。
1. 添加平台特定的源文件
经过几个小时的编码之后您可能已经开始了应用程序中特定于平台的部分并决定将依赖于平台的代码分开。
现在有两个新文件要包含到项目文件中helloin .cpp和hellounix.cpp。我们不能仅仅将这些文件添加到SOURCES变量中因为这会将两个文件都放在Makefile中。因此我们在这里需要做的是使用一个作用域它将根据我们为哪个平台构建而被处理。
为Windows添加平台相关文件的简单作用域如下所示:
win32 {SOURCES hellowin.cpp
}当构建Windows时qmake将helloin .cpp添加到源文件列表中。在为其他平台构建时qmake会忽略它。现在剩下要做的就是为特定于unix的文件创建一个作用域。 当你这样做了你的项目文件应该看起来像这样:
CONFIG debug
HEADERS hello.h
SOURCES hello.cpp
SOURCES main.cpp# windows
win32 {SOURCES hellowin.cpp
}# 类unix 包含 Linux
unix {SOURCES hellounix.cpp
}这个就是条件编译一样也会像以前一样使用qmake生成Makefile。
2. 如果文件不存在停止qmake
如果某个文件不存在您可能不想创建Makefile。我们可以使用exists()函数来检查文件是否存在。我们可以使用error()函数停止qmake的处理。这与作用域的工作方式相同。只需将作用域条件替换为函数。一个名为main.cpp的文件的检查是这样的:
!exists( main.cpp ) {error( No main.cpp file found )
}!符号用于否定测试。也就是说如果文件存在exists(main.cpp)为真如果文件不存在!exists(main.cpp)为真。
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将停止处理。
3. 检查多个条件
假设你使用的是Windows你希望在命令行中运行应用程序时能够通过qDebug()看到语句输出。要查看输出您必须使用适当的控制台设置构建应用程序。在Windows上我们可以轻松地将console放在配置行中在Makefile中包含此设置。然而假设我们只想在Windows上运行且debug已经在配置行中时添加配置行。这需要使用两个嵌套作用域。首先创建一个作用域然后在其中创建另一个作用域。将需要处理的设置放在第二个作用域中如下所示:
win32 {debug {CONFIG console}}嵌套的作用域可以用冒号连接在一起因此最终的项目文件如下所示:
CONFIG debug
HEADERS hello.h
SOURCES hello.cpp
SOURCES main.cppwin32 {SOURCES hellowin.cpp
}unix {SOURCES hellounix.cpp
}!exists( main.cpp ) {error( No main.cpp file found )
}win32:debug {CONFIG console
}