小麦克 发表于 2024-11-2 18:32

《CMake构建实战》CMake常用命令

# CMake 常用命令

CMake提供了很多命令,这些命令能够帮助我们在CMake程序中实现各种功能,包括对数值、字符串、列表、文件、路径的操作,生成文件、输出日志、指令命令行程序、引用模块、实现元编程、辅助调试等。

## 数值操作命令:math

CMake提供了math命令用于计算数学表达式。尽管这不如表达式语法那样简单直接,但鉴于构建过程中涉及数值计算的需求少之又少,使用math命令也算是在保持CMake语法单一性的前提下较为简单实用的一种方式了。

创建1.cmake

```cmake
cmake_minimum_required(VERSION 3.20)

math(EXPR a 10*10 OUTPUT_FORMAT DECIMAL)
message("a=${a}")
```

测试

```bash
$ cmake -P 1.cmake
a=100
```



## 字符串操作命令:string

### 搜索和替换

语法

```cmake
string(FIND <字符串> <子字符串> <结果变量> )
```

新建 `2.cmake`,搜索子字符串`a`

```cmake
string(FIND aba a res)
message("${res}")
```

从aba字符串搜索a,如果找到,返回字符串a所在的位置,上面的例子应该返回0,测试一下

```bash
$ cmake -P 2.cmake
0
```

### 替换字符串

语法

```cmake
string(REPLACE <匹配字符串> <替换字符串> <结果变量> <输入字符串>)
```

新建 `3.cmake`

```cmake
string(REPLACE a b res aba)
message("${res}")
```

将aba字符串中的a全部替换为b,上面的例子应该返回`bbb`,测试一下

```bash
$ cmake -P 3.cmake
bbb
```

### 取字符串长度

语法

```cmake
string(LENGTH <字符串> <结果变量>)
```

新建 `4.cmake`

```cmake
string(LENGTH aba res)
message("${res}")
```

计算字符串`aba`的长度,保存到`res`变量中,测试一下

```bash
$ cmake -P 4.cmake
3
```



## 列表操作指令list

### 列表长度

```cmake
list(LENGTH <列表变量> <结果变量>)
```

新建 `5.cmake`

```cmake
set(x a b c)
list(LENGTH x res )
message("${res}")
```

计算列表`x`的长度,保存到`res`变量中,测试一下

```bash
$ cmake -P 5.cmake
3
```

### 列表元素操作

```cmake
list(APPEND <列表变量> [<元素值>...])
```

在 `5.cmake` 基础上修改

```cmake
set(x a b c)
list(LENGTH x res )
message("${res}")
list(APPEND x d e f g)
message("${x}")
```

在列表`x`后面追加 `d e f g` 四个元素,测试结果如下

```bash
$ cmake -P 5.cmake
3
a;b;c;d;e;f;g
```



秦天qintian0303 发表于 2024-11-2 23:08

<p>CMake提供了math命令用于计算数学表达式,写法有什么不同吗</p>

小麦克 发表于 2024-11-4 15:31

秦天qintian0303 发表于 2024-11-2 23:08
CMake提供了math命令用于计算数学表达式,写法有什么不同吗

<p>我感觉平时使用CMake几乎用不到,可能是方便一些特殊场景吧</p>
页: [1]
查看完整版本: 《CMake构建实战》CMake常用命令