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/
我喜欢简单易用且对系统影响小的软件,因此我选择下载绿色版本,解压后就可以使用
解压后在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】,会发现两个文本框
红框内的文本框需要指定CMakeLists.txt所在的目录(也就是源目录)
黄框内的文本框需要指定存放生成的Visual Studio 2017解决方案的目录(也就是目标目录)
两个目录可以相同,但相信我还是指向不同的目录比较清晰一些
然后点击“Configure”按钮(因为CMake在生成项目时允许动态配置一些信息,这个以后再介绍),如果没有错误继续点击“Generate”按钮。
这样在目标目录下就生成了Visual Studio 2017解决方案,然后打开解决方案编译执行。
编译执行
打开HelloCMake.sln后发现解决方案中有三个项目
ALL_BUILD用于编译整个解决方案,HelloCMake为生成可执行方案的项目,我们将其设置为启动项。因此在ALL_BULID上右键【生成】然后将HelleCMake设置为【启动项】就可以调试代码了
执行效果