小麦克 发表于 2024-9-13 15:40

《CMake构建实战》 - 引入CMake

# CMake引入

### 为什么使用CMake

从之前的介绍中可知Linux平台中的Makefile和Windows不能做到很好的兼容。而CMake很好的解决了跨平台问题。CMake能做到一次编写,到处编译

CMake是高效的,写CMakeLists.txt比写Makefile高效,能帮助开发者将精力都放在写代码上

CMake是强大的,支持在同一项目中使用多种开发环境和编译器,支持多种编程语言,适合团队开发,几乎是构建C和C++项目的业界标准工具

### 安装CMake

在Ubuntu中安装,我安装的版本是`3.28.3`

```bash
bruce@ubuntu:~$ sudo apt install cmake
bruce@ubuntu:~$ cmake --version
cmake version 3.28.3

CMake suite maintained and supported by Kitware (kitware.com/cmake).
```

### 基础语法

`CMakeLists.txt` 项目顶层目录下的CMake入口文件

`<script>.cmake` 指定`-P`参数执行脚本类型的CMake程序,这种CMake程序不会配置生成任何构建系统

`<module>.cmake` 模块,通过`include`等命令引用模块程序

CMake程序几乎完全由命令调用构成,命令不区分大小写,一般使用小写

新建 `005`,创建`cmake.cmake`

```cmake
message(hello, CMake!)
```

执行

```bash
bruce@ubuntu:~/Documents/study/cmake/005$ cmake -P cmake.cmake
hello,CMake!
```

#### 命令参数

* 引号参数(quoted argument)
* 非引号参数(unquoted argument)
* 括号参数(bracket argument)

##### 引号参数(quoted argument)

```cmake
message("CMake
您好!")
```

```bash
bruce@ubuntu:~/Documents/study/cmake/005$ cmake -P 1.cmake
CMake
您好!
```

可以看到双引号`""`包裹的参数会原样的显示出来

##### 非引号参数(unquoted argument)

```cmake
message("x;y;z")
message(x y z)
message(x;y;z)
```

执行`cmake -P 2.cmake`

```bash
bruce@ubuntu:~/Documents/study/cmake/005$ cmake -P 2.cmake
x;y;z
xyz
xyz
```

##### 变量引用(variable reference)

创建`3.cmake`

```cmake
set(var_a 您好)
set(var_b a)

message(${var_${var_b}})
```

执行 `cmake -P 3.cmake`

```bash
bruce@ubuntu:~/Documents/study/cmake/005$ cmake -P 3.cmake
您好
```

小麦克 发表于 2024-9-13 15:41

<div></div>

hellokitty_bean 发表于 2024-9-13 19:31

<p>果然是bruce.........这个蛮不错的咯。。。。。。。。。。。。。。。。<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/loveliness.gif" width="48" /></p>

freebsder 发表于 2024-9-18 10:40

<p>谢谢分享,期待后续</p>

T_T1111 发表于 2024-9-22 21:09

<p>哈哈哈,我就什么都不说,打一个记号,看看大家都是怎么评论的。</p>
页: [1]
查看完整版本: 《CMake构建实战》 - 引入CMake