# 编译问题排查

## 问题：CMake 找不到 Ninja 构建工具

## 原因

NCS 使用 Ninja 作为构建工具，但系统 PATH 中可能没有包含 Ninja。

## 解决方案

### 方案 1：使用 NCS 自带的工具链（推荐）

NCS 工具链中应该包含 Ninja。检查环境变量：

```powershell
# 检查 NCS 工具链路径
echo $env:ZEPHYR_TOOLCHAIN_VARIANT
echo $env:ZEPHYR_SDK_INSTALL_DIR
```

如果使用 NCS，Ninja 应该在：
- `C:\ncs\toolchains\*\opt\bin\ninja.exe`

### 方案 2：安装 Ninja

1. **使用 Chocolatey**（如果已安装）：
   ```powershell
   choco install ninja
   ```

2. **手动下载**：
   - 从 https://github.com/ninja-build/ninja/releases 下载
   - 解压到某个目录（如 `C:\ninja`）
   - 添加到 PATH：
     ```powershell
     $env:PATH += ";C:\ninja"
     ```

3. **使用 pip 安装**：
   ```powershell
   pip install ninja
   ```

### 方案 3：使用 VSCode 的 nRF Connect 扩展

如果使用 VSCode + nRF Connect 扩展：
1. 按 `Ctrl+Shift+P`
2. 输入 "nRF Connect: Build"
3. 选择项目并构建

扩展会自动使用正确的工具链。

### 方案 4：检查 NCS 环境设置

确保 NCS 环境变量已正确设置：

```powershell
# 检查环境变量
echo $env:NRF_CONNECT_SDK_PATH
echo $env:ZEPHYR_BASE

# 如果未设置，需要设置：
# $env:NRF_CONNECT_SDK_PATH = "C:\nrf"
# $env:ZEPHYR_BASE = "C:\nrf\zephyr"
```

### 方案 5：使用 west build 的完整路径

如果 NCS 工具链已安装，可以尝试：

```powershell
# 激活 NCS 环境（如果有）
cd C:\nrf
.\zephyr\scripts\activate.bat

# 然后编译
cd D:\Project\firmware\pm-n52832\pm-n52832\firmware-ncs
west build -b nrf52dk_nrf52832
```

## 快速检查

运行以下命令检查工具是否可用：

```powershell
# 检查 west
west --version

# 检查 cmake
cmake --version

# 检查 ninja
ninja --version

# 检查 nrfjprog
nrfjprog --version
```

## 推荐解决方案

**最简单的方法**：使用 VSCode 的 nRF Connect 扩展进行编译，然后使用 `flash.bat` 烧录。

或者，确保 NCS 工具链已正确安装并添加到 PATH。

