001-【CMake】第一个CMake项目

最近编写关于C++解析JSON的代码,接触到了JSONCPP。发现JSONCPP使用一种叫CMAKE的软件进行跨平台编译的,可以在Windows平台上生成Visual Studio的项目,可以在Linux上生成Makefile项目,因此对CMAKE产生了兴趣。

之前一直想学习Makefile无耐感觉Makefile过于复杂,发现CMake后,感觉柳暗花明了,学习了CMAKE岂不是就不需要学习Makefile了而且还能跨平台,岂不快哉

第一个CMake项目

先编写一个"HelloCMake.cpp"然后利用CMake生成Visual Studio 2017工程

下载CMake

地址:https://cmake.org/download/

我喜欢简单易用且对系统影响小的软件,因此我选择下载绿色版本,解压后就可以使用

001-【CMake】第一个CMake项目

解压后在bin目录下会发现cmake-gui.exe就是我要使用的工具,虽然对于程序员使用命令行更为专业,不过我实在是不愿意为记住各种命令而伤费脑筋,只要能达到目的就用最简单最直观的方式,因此直接使用GUI。

编写CPP(随便找个文本编辑器,我使用的是UltraEdit)

编写CPP不再赘述了

#include "Windows.h" //虽然CMake是跨平台的,本文只演示Windows下使用CMake,因此引入了Windows.h
#include "stdio.h"

int main()
{
  printf("Hello CMake");
  system("pause");
  return 0;  
}

编写CMakeLists.txt

CMake是根据CMakeLists.txt文件内容来生成项目的,因此需要编写一个CMakeLists.txt

#cmake_minimum_required 指明需要使用的CMake软件的最低版本,我下载的是3.14因此就写3.14了
cmake_minimum_required (VERSION 3.14)

#project指明项目名称,对应Visual Studio解决方案和项目的名称
project (HelloCMake)

#add_executable 指明生成可执行文件的名称(HelloCMake),和生成可执行文件依赖的源文件(HelloCMake.cpp)
add_executable(HelloCMake HelloCMake.cpp)

CMakeLists.txt是由注释和命令组成的,【#】后的文本是注释。命令的格式为命令名称(参数列表),cmake_minimum_required、project、add_executable都是命令

生成Visual Studio 2017解决方案

编写完CPP和CMakeLists.txt后将两个文件放在一个目录下。

打开【cmake-gui.exe】,会发现两个文本框

001-【CMake】第一个CMake项目

红框内的文本框需要指定CMakeLists.txt所在的目录(也就是源目录)

黄框内的文本框需要指定存放生成的Visual Studio 2017解决方案的目录(也就是目标目录)

两个目录可以相同,但相信我还是指向不同的目录比较清晰一些

然后点击“Configure”按钮(因为CMake在生成项目时允许动态配置一些信息,这个以后再介绍),如果没有错误继续点击“Generate”按钮。

001-【CMake】第一个CMake项目

这样在目标目录下就生成了Visual Studio 2017解决方案,然后打开解决方案编译执行。

001-【CMake】第一个CMake项目

编译执行

打开HelloCMake.sln后发现解决方案中有三个项目

001-【CMake】第一个CMake项目

ALL_BUILD用于编译整个解决方案,HelloCMake为生成可执行方案的项目,我们将其设置为启动项。因此在ALL_BULID上右键【生成】然后将HelleCMake设置为【启动项】就可以调试代码了

001-【CMake】第一个CMake项目

001-【CMake】第一个CMake项目

执行效果

001-【CMake】第一个CMake项目