2.1 案例1 通过一个简单的EXE来介绍pro的基本配置

本案例对应的源代码目录:src/chapter02/ks02_01。程序运行效果见图2-1。

图2-1 案例1运行效果

计算机软件一般以EXE或DLL的形式存在,本节先通过一个简单的EXE项目实例介绍Qt的pro文件(项目配置文件)的基本配置。

本节的EXE功能很简单,仅输出一行信息: 我真的啥也没干。具体代码请见代码清单2-1。

代码清单2-1

// main.cpp

#include <iostream>

#include "qglobal.h"

using std::cout;                                                                         

using std::endl;                                                                         

int main(int argc, char * argv[]) {

    Q_UNUSED(argc);

    Q_UNUSED(argv);

    cout << "我真的啥也没干。" << endl;

    return 0;

}

在代码清单2-1中,为了向终端输出日志,用到了STL库的cout、endl(cout用来向终端输出信息,endl表示换行)。这需要引用<iostream>,所以编写#include <iostream>语句。除此之外,在标号①、标号②处,使用using语句引入了cout和endl,这是为了避免引入整个stl命名空间。有的开发者可能会写成:

using namespace stl; // 不推荐

本书不推荐这样的写法。在涉及命名空间的使用时,应该仅引入所需的内容或者不编写引入命名空间的代码,即:直接使用std::cout的写法:

std::cout << “xxx” << std::endl;

main()函数比较简单,因此不再过多讲解。下面看一下怎么构建这个项目。在C++中,如果使用GCC编译器,就需要提供Makefile文件(项目配置文件)。但手工编写Makefile文件非常麻烦,而且还涉及非常多、非常复杂的编译选项。Qt提供了一种简化手段来生成Makefile文件。它要求开发者提供pro文件,然后使用qmake命令将其转换为Makefile。那么pro文件是什么呢?pro文件是Qt定义的项目配置文件。它是文本格式的文件,采用key = values的语法。比如,项目用到了main.cpp,那就在pro中编写:

SOURCES +=  main.cpp

其中,SOURCES指示本项目用到的cpp文件列表。其中+=表示在SOURCES原值的基础上添加main.cpp。比如,在pro中可以继续追加cpp文件:

SOURCES =  main.cpp // SOURCES 的值为 main.cpp

SOURCES += imp.cpp  // SOURCES 的值为 main.cpp、imp.cpp

这样,项目包含的cpp文件(SOURCES文件)就变成: main.cpp、imp.cpp。如果有多个cpp文件,可以写在main.cpp的后面,比如:

SOURCES += main.cpp  imp.cpp

但如果这样写,代码的可读性不是很好。这种情况下可使用“\”进行换行。比如:

SOURCES += main.cpp \

             imp.cpp

注意:main.cpp和后面的“\”之间最好加一个空格以便增加可读性。

项目中添加头文件时使用HEADERS配置项,用法同SOURCES。比如:

HEADERS+= myclass.h \

          imp.h

每个Qt项目最终都要生成一个目标程序。为了指示项目的目标程序名称,需要用到TARGET配置项,比如:

TARGET   = ks02_01

这表明该项目生成的目标程序名称为ks02_01。如果该项目生成一个可执行程序,那么在Windows上生成的程序为ks02_01.exe,而在Linux上(或UNIX)上为ks02_01。如果该项目生成的是一个DLL(动态链接库),那么在Windows上为ks02_01.dll,而在 Linux(或UNIX)上可能为libks02_01.so.1.0.0。

以上介绍了pro文件最基本的配置。代码清单2-2是本案例中pro文件的完整内容。

代码清单2-2

// ks02_01.pro

TEMPLATE  = app

LANGUAGE  = C++

CONFIG   += console

TARGET    = ks02_01

HEADERS  += ks02_01.pro                 

SOURCES  +=  main.cpp

DESTDIR   = ../../../bin

OBJECTS_DIR = ../../../obj/chapter02/ks02_01

MOC_DIR      = ../../../obj/moc/chapter02/ks02_01

在代码清单2-2中,TEMPLATE = app表示这是一个EXE项目。如果本项目生成的最终模块是一个DLL,则写成TEMPLATE=lib。因为使用C++语言进行开发,所以写成:LANGUAGE = C++。这个项目是一个终端运行程序(命令行程序),所以写成:CONFIG += console。如果不这样设置,则无法在终端中正常运行(比如,cout的信息无法输出到终端)。如果想进行验证,可以封掉这行配置,方法是在该行配置前加上一个“#”号(输入#时请使用英文、半角,不要用中文)。“#”表明本行是注释,那么Qt就不会把这行当作配置进行解析。封掉某配置项时可以写成:

#CONFIG += console

最后的几个xxxDIR用来描述各种路径。

  1. DESTDIR:表示生成的最终目标程序的存放路径。    
  2. OBJECTS_DIR:表示程序生成的中间临时文件的存放路径。   
  3. MOC_DIR:用来描述moc文件的存放路径(Qt的moc命令生成的临时文件)。该配置项会在后面的章节进行详细说明。

在本案例的pro文件中,这些路径的设置都使用了相对路径的方式,其实一般不推荐这种方式。在后续的案例中会使用环境变量的方式设置这些路径。

现在把pro文件和cpp文件放到同一个目录下,目录名设置为ks02_01。最后,构建项目 (通俗地讲,也可以称作编译),以便生成最终的目标程序。可以通过两种方式构建应用程序:使用Qt Creator或者使用VS 2017。

1.使用Qt Creator

启动Qt Creator,选择【文件】|【打开文件或项目】菜单项,出现【打开文件】对话框,打开ks02_01.pro。然后在图2-2 所示界面中单击Configure Project按钮对项目进行配置。

图2-2 Qt Creator项目配置

然后,单击图2-3中的【构建项目】按钮。

图2-3 Qt Creator构建项目

        当构建成功后,单击图2-3中的【运行】按钮即可启动本案例的程序。

2.使用VS 2017

1)使用VS 2017命令行

首先根据构建的应用程序位数(64位/32位),选择对应的VS 2017命令行。如果构建64位程序,则选择如图2-4所示的【适用于VS 2017的x64本机工具命令提示】(简称VS 2017的64位命令行);如果构建32位程序,则选择如图2-4所示的【适用于VS 2017的x86本机工具命令提示】。除特殊说明外,本书所有程序均构建成64位。

图2-4 VS 2017的x64和x86命令提示启动菜单

在VS 2017的64位命令行中,进入项目所在目录,执行如下命令后即可将项目构建成功:

qmake

nmake

如果需要清除项目生成的临时文件及目标程序,然后重新构建目标程序,那么可以使用如下命令:

nmake  clean

2)使用VS 2017 IDE开发工具

如果使用VS 2017的IDE开发工具打开该项目,那么首先要生成VS 2017可以识别的项目文件。生成的方法是在VS 2017的64位(或32位,根据具体需要)命令行中,进入本案例所在目录,运行qmake命令。

qmake  -tp  vc

       

 

其中vc表示生成Visual Studio可以识别的工程文件,“-tp”表示根据pro文件中TEMPLATE参数的取值生成工程文件。这样就可以生成名为ks02_01.vcxproj的项目文件。以vcxproj为后缀的文件是VS 2017可以识别的项目文件。然后,在开始菜单中选择Visual Studio 2017菜单项启动VS 2017(见图2-5)。

图2-5 VS 2017启动菜单项

启动VS 2017后,选择【文件】|【打开】|【项目/解决方案】菜单项,打开ks02_01.vcxproj项目配置文件。打开项目后,选择【生成】|【生成解决方案】菜单项完成项目构建。

3. 用UTF-8编码保存源代码文件

本节介绍2种用UTF-8编码格式保存源代码文件的方法。

1)使用Windows自带的记事本

在Windows资源管理器中新建一个空白的文本文件,然后用Windows自带的记事本打开该文件。选择【文件】|【另存为】菜单项,弹出【另存为】对话框,在【编码】处选择UTF-8(见图2-6)。

图2-6 另存为UTF-8编码

2)设置Qt Creator的文件编码

运行Qt Creator,选择【工具】|【选项】菜单项(见图2-7)。

图2-7 Qt Creator工具菜单

如图2-8所示,在【选项】对话框中左侧列表框中选择【文本编辑器】选项卡,然后选择【行为】选项卡,将【文件编码】选项区域的【默认编码】设置为UTF-8,将UTF-8 BOM设置为【如果编码是UTF-8则添加】。

图2-8 Qt Creator编码设置

        完成配置后,就可以新建文件了。如图2-9所示,选择【文件】|【新建文件或项目】菜单项。在弹出的New File or Project对话框中选择C++,并根据需要选择C++ Source File或者C++ Header File(见图2-10)。

图2-9 Qt Creator新建文件

图2-10 Qt Creator新建C++代码文件

创建完源代码文件后,在文件中输入源代码后保存即可。请务必输入一些代码,否则直接保存空文件可能会导致文件变为GB2312编码。

pro文件不能以UTF-8 BOM格式保存。如果用Qt Creator打开项目文件(xxx.pro)时提示错误信息“Cannot read xxx/xxx/xxx.pro: Unexpected UTF-8 BOM”,那么可以用NotePad++编辑器打开项目文件,然后执行【编码】|【转为UTF-8编码】,将项目文件保存,然后再用Qt Creator打开项目文件即可。

《Qt 5/PyQt 5实战指南》目录

posted @ 2019-08-30 17:05  女儿叫老白  阅读(507)  评论(0编辑  收藏  举报