# CMake 调试 / try_compile / 查找库 相关选项整理

## 1️⃣ try_compile / 编译测试相关

| 选项 / 变量 | 类型 | 示例 | 作用 |
|---|---|---|---|
| `--debug-trycompile` | 命令行 | `cmake --debug-trycompile -S . -B build` | 不删除 `try_compile()` / `try_run()` 生成的测试工程 |
| `CMAKE_TRY_COMPILE_CONFIGURATION` | 变量 | `-DCMAKE_TRY_COMPILE_CONFIGURATION=Debug` | 指定 try_compile 使用的构建类型 |
| `CMAKE_TRY_COMPILE_TARGET_TYPE` | 变量 | `-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY` | 指定 try_compile 生成的目标类型 |
| `CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES` | 变量 | `-DCMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES=ON` | try_compile 不继承平台变量 |

---

## 2️⃣ CMake 脚本执行追踪

| 选项 | 示例 | 作用 |
|---|---|---|
| `--trace` | `cmake --trace` | 打印每个执行的 CMake 指令 |
| `--trace-expand` | `cmake --trace-expand` | trace 并展开变量 |
| `--trace-source=<file>` | `cmake --trace-source=CMakeLists.txt` | 只 trace 指定文件 |
| `--trace-redirect=<file>` | `cmake --trace-redirect=trace.log` | 把 trace 输出写入文件 |

---

## 3️⃣ find_package / 查找库调试

| 选项 / 变量 | 示例 | 作用 |
|---|---|---|
| `--debug-find` | `cmake --debug-find` | 打印 `find_package` 搜索路径 |
| `CMAKE_FIND_DEBUG_MODE` | `-DCMAKE_FIND_DEBUG_MODE=ON` | 调试 find 系列命令 |

---

## 4️⃣ 日志级别控制

| 选项 | 示例 | 作用 |
|---|---|---|
| `--log-level=<level>` | `cmake --log-level=DEBUG` | 控制日志输出级别 |
| `--log-context` | `cmake --log-context` | 显示日志来源 |
| `--log-level=TRACE` | `cmake --log-level=TRACE` | 最详细日志 |

可用日志级别：

| 级别 |
|---|
| `ERROR` |
| `WARNING` |
| `NOTICE` |
| `STATUS` |
| `VERBOSE` |
| `DEBUG` |
| `TRACE` |

---

## 5️⃣ 生成系统调试

| 选项 | 示例 | 作用 |
|---|---|---|
| `--graphviz=<file>` | `cmake --graphviz=deps.dot` | 生成依赖图 |
| `--profiling-output=<file>` | `cmake --profiling-output=profile.json` | 输出配置性能分析 |

---

## 6️⃣ 常用调试组合

### 调试 try_compile

```bash
cmake --debug-trycompile -S . -B build
```

---

### 调试 find_package

```bash
cmake --debug-find
```

---

### 查看所有脚本执行

```bash
cmake --trace-expand
```

---

### 超级调试模式

```bash
cmake \
  --debug-trycompile \
  --trace-expand \
  --debug-find \
  --log-level=DEBUG
```

---

## 7️⃣ 交叉编译最常用三项

| 选项 | 作用 |
|---|---|
| `--debug-trycompile` | 查看 CMake 编译器测试 |
| `--debug-find` | 查看库搜索路径 |
| `--trace-expand` | 查看 CMake 变量和执行流程 |

---

## 8️⃣ try_compile 临时目录

CMake 的编译测试通常生成在：

```
build/CMakeFiles/CMakeTmp
```

开启 `--debug-trycompile` 后该目录不会被删除，方便调试编译问题。