自学编程,从此开始

上第2学堂,听有趣的编程课

课文: 《安装、集成CMake》 (点击查看完整内容:视频+评测+讨论+……)

作者:第2学堂

下载、安装并将CMake集成到Qt Creator;同时学习如何在Qt Creator中创建一个使用CMake构建的项目。

课文题图

 

安装、集成 CMake

1 安装、集成

CMake 官网 : https://cmake.org/

直接进入下载网址: https://cmake.org/download/。

注意该页面中,Windows版本的CMake除区分32位和64位之外,还各自提供了安装程序(msi)和ZIP压缩包两种形式,我们要的是msi。

说个题外话: 安装向导中,有一步选择“Install Options”,涉及如何处理安装后的CMake路径,默认选中的是 “Do not add CMake to the system PATH”:

这和我们之前安装GCC套件策略是一样的。不将本次安装的CMake可执行程序的路径,加入系统的“PATH”变量中——意味着:随机打开一个控制台,然后输入 cmake.exe ,是找不到本次安装的cmake.exe的。为什么 GCC 或 CMake 都选择了这样的默认安排?原因在于很多时候,其它一些软件系统也会自带GCC或CMake,版本和我们安装的相同的概率很小,多数情况下版本不同,无法混用。这种情况下,大家各自偏安一隅,才不会互相打架。

完成安装后,如果你使用默认路径,也就是 X:\Program File\CMake,那么只要此时启动 Qt Creator,后者就会 “聪明” 地找到CMake,并完成集成。不过,出于人类的骄傲的尊严,我们还是要亲眼看一眼才放心。

主菜单选 “工具 -> 选项”。弹出的选项对话框中,左边选第一项 “Kits”,右边切换到CMake页(通常是最后一页),如果其下 “Auto-detected”节点列出 cmake.exe的完整路径及文件名,也不代表你可以马上放下人类的骄傲的尊严,应该认真看看,它是不是我们之前安装的CMake所在路径。

如果万一没有自动检测到——比如你改变了CMake的安装路径,那么就得按同一页面最右边上的 "Add" 按钮,然后通过浏览,找到 cmake.exe 的完整路径及文件名。

接着还需要将刚刚配置的CMake集成到当前我们唯一的构建套件(Kits)“桌面”,切换到“构建套件(Kit)”页(通常是第一页),然后查看它的“CMake Tool”选项是否已经选中了cmake.exe。

2 试用

新建一个“Non-Qt Project/非Qt 项目” 的 "C++ Application",命名“hello_cmake”;构建系统(Build System)自然要选择CMake,而不是Qt Creator自带的Qbs或qmake;其余步骤操作和上一节课所创建的项目基本一致,但视频中仍然给出详细演示 。注意!在后面的相当多的学习过程中,我们几乎每有需要一个项目,都需要这个过程,届时只会一步带过。

我们重点说三件事。

一、同样是构建系统(或称制作器),工作起来,CMake比Qbs看起来慢太多了——记得上节课构建系统,我们在Qt Creator底部4号消息看到用时是4秒或2秒,而本节课,改用CMake后,你或许没注意到,用时竟然是 23 秒(视频4分24秒位置)。如此情况下,我们仍然选用CMake,因为它近乎事实标准的使用范围,到处可查的相关资料,有利于学习,也有利于工作。

二、Qt Creator 支持将一个控制台程序的运行,也集成进来,效果就是该程序没有一个单独的控制台窗口来显示内容,而是将输出内容集成在Qt Creator底部3号信息页“应用程序输出”。可惜这个集成是“半拉子”的,只集成显示程序的输出内容,没有集成如何向程序输入数据。因此通常我们会取消这个配置。方法是将 Qt Creator 顶层视图切换到 “项目”页,然后选中当前项目的 “Run” 配置节点,右部找到“Run in terminal”,勾上。

三、简单解释一下CMakelists.txt 的当前的三行内容:

  1. cmake_minimum_required (VERSION 2.8) 。翻译一下“minimum”和“required”就懂得它的意思了。向导默认只要求2.8版本的CMake。
  2. project(hello_cmake)。括号中的hello_cmake就是我们之前创建项目时为它取的名字,注意,它没有双引号包围。
  3. add_executable($(PROJECT_NAME), "main.cpp")。“executable”是可执行的意思。“add_executable”表示为当前项目增添一个最终输出文件。一个项目并不一定只生成一个最终结果。将来如有需要,我们可以多次调用这个 add_executable来生成多个可执行程序。“\$(变量名)” 是Linux系统典型的环境变量的写法,此处变量名是“PROJECT_NAME”,表示生成的可执行程序的名字,和项目同名。最后,需要编译哪些源文件以生成这个可执行程序,这就是add_executable第二个参数 “main.cpp” 所发挥的作用。

3 下一步

最后说一个好消息:学完本课,一个集成C编译器、C++编译器、调试器、制作器的IDE(Qt Creator)就准备好了;意味着初学者可以先跳过《C++编程 准备篇》进入下一个篇章:《C++编程 感受篇(一)》。某种意义上讲,《感受篇》才是我们真正学习”C++语言“的开始。