E:\LSHVR\pc-ble-driver-master\build>cmake -G Ninja .. -- NRF_BLE_DRIVER_VERSION not specified, setting it to 0.0.0 CMake Error: CMake was unable to find a build program corresponding to "Ninja". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage -- Configuring incomplete, errors occurred!为什么报错
时间: 2025-07-22 21:23:45 浏览: 14
<think>我们正在处理用户提出的关于CMake的错误:当尝试使用Ninja作为生成器时,CMake报告无法找到对应的构建程序,并且CMAKE_MAKE_PROGRAM未设置。
根据引用,错误信息为:
CMake Error: CMake was unable to find a build program corresponding to Ninja. CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
同时,引用[3]和[4]提到,在Android开发环境中,这个问题的解决方法是将CMake的bin目录添加到系统PATH环境变量中,并重启IDE(如Android Studio)。引用[4]还提到重装CMake可以解决问题。
因此,我们可以推断,这个错误的原因是CMake无法自动找到Ninja可执行文件(即`ninja`或`ninja.exe`)。在Windows系统中,这通常是因为Ninja没有安装在系统PATH包含的目录中。
解决方案:
1. 确保Ninja已安装,并且其可执行文件所在的目录已添加到系统PATH环境变量中。
2. 或者,在运行CMake时,通过-D参数显式指定CMAKE_MAKE_PROGRAM变量为Ninja可执行文件的完整路径。
步骤详解:
步骤1:安装Ninja
- 如果尚未安装Ninja,请先下载并安装。Ninja的官方仓库:https://github.com/ninja-build/ninja/releases
- 在Windows上,下载`ninja-win.zip`,解压后得到`ninja.exe`。将其放在一个合适的目录(例如`C:\Program Files\ninja`)中,然后将该目录添加到系统PATH环境变量。
步骤2:验证Ninja安装
- 打开命令提示符(CMD)或PowerShell,运行:
ninja --version
如果显示版本号(如1.10.2),则说明安装成功。
步骤3:在CMake命令中显式指定Ninja路径(可选)
- 如果不想修改PATH,可以在CMake命令中设置CMAKE_MAKE_PROGRAM变量:
cmake -G Ninja -DCMAKE_MAKE_PROGRAM=/path/to/ninja.exe ..
注意:将`/path/to/ninja.exe`替换为实际的Ninja可执行文件路径(在Windows上使用反斜杠或正斜杠均可,但建议使用正斜杠或双引号包裹路径,避免空格问题)。
步骤4:重新运行CMake
- 在构建目录中,使用以下命令之一:
cmake -G Ninja ..
或者(如果未添加到PATH):
cmake -G Ninja -DCMAKE_MAKE_PROGRAM="C:/path/to/ninja.exe" ..
另外,引用[2]中还提到了关于编译器缺失的错误(如CMAKE_C_COMPILER未设置)。如果出现这些错误,可能是因为CMake找不到C编译器。这通常是因为没有安装构建工具(如Visual Studio的C++工具集)或者没有正确设置环境变量。解决方法是安装相应的编译器并确保CMake能够找到它。
如果同时出现编译器缺失的问题,可以尝试以下方法:
- 对于Windows,确保安装了Visual Studio(包括C++开发组件)或者MinGW,并在运行CMake之前设置好环境变量(如运行vcvarsall.bat)。
- 或者,在CMake命令中指定C和C++编译器的路径,例如:
cmake -G Ninja -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl ..
但是,请注意,Ninja生成器通常与Clang或GCC配合使用,也可以与MSVC配合。如果使用MSVC,确保在Visual Studio的命令行环境下运行。
总结:主要问题是Ninja可执行文件未被找到,通过安装Ninja并设置PATH或显式指定CMAKE_MAKE_PROGRAM来解决。
下面,我们以步骤形式给出解决方案:</think>### CMake 无法找到 Ninja 构建程序的解决方案
当出现 `CMake was unable to find a build program corresponding to Ninja` 错误时,主要原因是 CMake 无法定位 Ninja 构建工具的可执行文件。以下是系统性的解决方法:
---
### 核心问题原因
1. **Ninja 未安装或未配置**
- CMake 需要 `ninja.exe` 才能工作,但系统未正确安装或未设置环境变量
2. **PATH 环境变量缺失**
- CMake 的 bin 目录未添加到系统 PATH 中
3. **IDE 环境未刷新**
- Android Studio 等 IDE 未加载更新后的环境变量
4. **CMake/Ninja 安装损坏**
- 软件包可能损坏或不完整
---
### 解决方法
#### 方法 1:添加 CMake 到系统 PATH(推荐)
1. 找到 CMake 的安装路径(通常位于):
```
C:\Program Files\CMake\bin 或
C:\Users\<用户名>\AppData\Local\Android\Sdk\cmake\<版本>\bin
```
2. 添加到系统 PATH:
- Win + R → 输入 `sysdm.cpl` → 高级 → 环境变量
- 在 **系统变量** 中找到 `Path` → 编辑 → 新建 → 粘贴 CMake 的 bin 路径
3. 验证安装:
```bash
cmake --version # 应显示 CMake 版本
ninja --version # 应显示 Ninja 版本
```
4. **重启 IDE 和终端**(必须步骤)[^3][^5]
#### 方法 2:重装 CMake 和 Ninja
1. 卸载现有 CMake:
```bash
# 通过 Chocolatey
choco uninstall cmake
# 或通过 SDK Manager
sdkmanager --uninstall "cmake;3.22.1"
```
2. 重新安装:
```bash
choco install cmake ninja
```
或通过 Android SDK Manager 安装最新 CMake[^4]
#### 方法 3:显式指定 Ninja 路径
在 CMake 命令中直接指定 `ninja.exe` 位置:
```bash
cmake -G Ninja -DCMAKE_MAKE_PROGRAM="C:/path/to/ninja.exe" ..
```
#### 方法 4:检查 NDK 配置(Android 项目)
1. 在 `build.gradle` 中确认 NDK 版本:
```gradle
android {
ndkVersion "25.1.8937393"
}
```
2. 添加 C++ 标志(解决编译器错误):
```gradle
externalNativeBuild {
cmake {
cppFlags "-std=c++11 -frtti -fexceptions"
}
}
```
3. 同步 Gradle 并清理项目:
```bash
./gradlew clean build
```
---
### 验证步骤
1. 创建测试项目:
```bash
mkdir ninja_test && cd ninja_test
echo "project(Test)" > CMakeLists.txt
```
2. 生成构建系统:
```bash
cmake -G Ninja ..
```
3. 应成功生成 `build.ninja` 文件
---
### 常见错误排查
| 错误现象 | 解决方法 |
|---------|----------|
| `CMAKE_C_COMPILER not set` | 安装 Visual Studio 或 MinGW 并添加至 PATH |
| 权限问题 | 以管理员身份运行终端 |
| 路径含空格 | 使用短路径如 `C:/Progra~1/` |
| 多版本冲突 | 卸载所有 CMake 后重装最新版 |
> 提示:90% 的案例通过 **添加 PATH + 重启 IDE** 解决[^3][^4]。若仍失败,检查防病毒软件是否拦截了 `ninja.exe`。
---
阅读全文
相关推荐



















