如何使用cmake

写在前面

CMake这玩意儿自从学会去fork别人的代码的时候就一直不停的出现在我的眼前,当然,去配置C++的各种库的时候也很常见。具体是干啥的,实际上一直都是一知半解的,所以花点时间,搞搞它具体是怎么个写法。
我目前所接触到的CMake可以完成的事情:

  1. 根据C++库的源码,生成配置C++库的一些配置文件,即.lib以及.dll格式的一些文件。在我的理解,对于不同操作系统以及不同的操作设备而言,由高级语言(C,C++,python等)生成的二进制的执行语言(机器可读的语言)是不同的。CMake可以根据具体的情况去生成,使得我们可以免于担心这些问题。
  2. 使用CMake构建二进制的项目文件,并且使用这些文件进一步的生成可执行的程序(.exe格式的文件)。

使用CMake配置C++库

关于使用CMake来完成C++库的配置,可以找到很多具体的库的配置的教程,例如计算机图形处理常用库openCV的配置,在这些配置教程当中十分详细的介绍了如何使用CMake去做这样的事情,所以这里就不再赘述了。

使用CMake生成可执行程序

这一部分实际上应当是CMake的精彩之处了。为了对这个过程进行说明,以生成最简单的hellow_world的程序为例,对这个过程进行说明。我比较熟悉visual studio的IDE,所以我的示例就由此给出(虽然实际上和IDE的关系不大)。

写一个hellow_world.cpp

IDE就是来做这件事情的,使用visual studio创建一个控制台应用程序(我最爱用的),写一个hellow_world.cpp(实际上最新版本的vs打开后就是这个程序),贴一下代码好了。

#include <iostream>

int main()
{
    std::cout << "Hello World!\n";
}

然后关掉VS,后面的事情基本上和他没有关系了。

写一个CMakeList.txt

对于所有的使用CMake来生成可执行程序的文档中,都只使用同样的CMakeList.txt,windows系统下直接创建一个文本文档即可,命名一定得是CMakeList.txt,.txt是格式后缀。在本个实例中的CMakeList.txt如下:

PROJECT (HELLO)

SET(SRC_LIST hellow_world.cpp)

MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})

MESSAGE(STATUS "This is SOURCE dir "${HELLO_SOURCE_DIR})

ADD_EXECUTABLE(hello ${SRC_LIST})

CMakeList.txt中使用的他预言不属于任何的一种高级语言,而是CMake的团队自己开发的一种新的语言,所以需要额外的学习。

调用命令行

以windows系统下的操作为例,使用快捷键(Win+R),输入cmd,然后enter即可。
在这里插入图片描述
在这里插入图片描述
命令行就是长这个样子的,然后转到hellow_world.cpp所在的文件路径下,前面所写的CMakeLists.txt也要放在同一个文件路径下,在命令行输入"cd+文件的路径"。
在这里插入图片描述
可以自己建一个build的文件夹(为了和源文件分离开),也可以使用命令行建一个文件夹,命令行输入“mkdir build”,意思是在当前路径下创建文件夹build.
转到build目录下“cd build”
在这里插入图片描述
使用cmake进行配置与生成,键入“cmake ..”,意思是在上一级的目录中找到CMakeList.txt。“cmake .”是在本级目录中寻找,并且据此进行配置与生成。这个过程实际上是要生成Makefile,window执行这一步时可能会失败。在这里插入图片描述

解决方法:在build文件夹下找到CMakeCache.txt,删去
调用“cmake .. -G “Unix Makefiles”“即可
在这里插入图片描述
最后执行make的步骤即可生成可执行的程序,windows系统在命令行键入“mingw32-make”
在这里插入图片描述
执行时在命令行键入"hello"。这个名字是在CMakeList.txt中定义的,自然也是可以修改的。
在这里插入图片描述
好的,搞定!

写在后面

mingw32-make的命令需要通过一定的配置才可以使用,具体的配置方法可以参见这篇文章
通过以上的介绍,可以发现实际上cmake的核心在于CMakeList.txt的编写,更多的内容希望通过对于官方文档的教程翻译进行解读!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值