如何使用cmake

这篇博客介绍了CMake的基本用途,包括根据C++库源码生成配置文件和构建可执行程序。通过一个简单的Hello World程序示例,详细解释了如何使用CMakeLists.txt编写配置,以及在命令行中调用cmake和make来构建项目。重点在于理解CMakeList.txt的编写和命令行操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面

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的编写,更多的内容希望通过对于官方文档的教程翻译进行解读!

### 使用 CMake 在 Linux 下进行项目构建 CMake 是一种跨平台的构建工具,广泛用于复杂项目的编译和管理。它通过生成本地化的构建文件(如 Makefile 或 IDE 工程文件),简化了多平台下的软件开发流程。 #### 安装 CMake 如果尚未安装 CMake,则可以通过包管理器或手动下载的方式完成安装。以下是两种常见的方法: 1. **使用包管理器** 对于大多数 Linux 发行版,可以利用 `apt`, `yum` 等包管理器来快速安装 CMake: ```bash sudo apt update && sudo apt install cmake # Debian/Ubuntu sudo yum install cmake # CentOS/RHEL ``` 2. **手动安装特定版本** 如果需要指定某个版本的 CMake,可按照以下方式操作[^2]: ```bash mkdir -p cmake-3.31 && \ wget -qO- "https://cmake.org/files/v3.31/cmake-3.31.0-linux-x86_64.tar.gz" | \ tar --strip-components=1 -xz -C cmake-3.31 export PATH=$(pwd)/cmake-3.31/bin:$PATH ``` #### 创建基本的 CMake 构建环境 为了在 Linux 上使用 CMake 进行项目构建,通常遵循以下几个原则性的步骤[^3]: 1. **编写 CMakeLists.txt 文件** 需要在源码目录创建一个名为 `CMakeLists.txt` 的配置文件,定义目标、依赖项以及编译选项等内容。例如: ```cmake cmake_minimum_required(VERSION 3.20) project(MyProject LANGUAGES CXX) add_executable(myapp main.cpp utils.cpp) target_include_directories(myapp PRIVATE ${PROJECT_SOURCE_DIR}/include) ``` 2. **设置构建目录** 推荐将构建过程中的中间产物放在单独的子目录中,而不是污染源代码树。执行如下命令创建并切换到构建目录: ```bash mkdir -p build && cd build ``` 3. **运行 CMake 命令** 调用 CMake 来解析 `CMakeLists.txt` 并生成相应的构建系统文件[^4]: ```bash cmake .. ``` 此处假设父级目录包含了上述提到的 `CMakeLists.txt` 文件。 4. **启动实际构建过程** 当前默认情况下会生成 GNU Makefiles,因此可以直接调用 `make` 开始编译工作: ```bash make ``` 对于更复杂的场景,比如集成图形界面库 (Qt),也可以借助 CMake 提供的支持模块轻松实现[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值