cmake --version 返回 command not found 根本原因是安装路径未加入系统 path:windows 漏勾“add to path”、macos 拖拽安装后未配置 /applications/cmake.app/contents/bin、linux 用 apt 安装版本过旧(如 ubuntu 22.04 的 3.22),均导致命令不可见;验证用 which cmake 或 type -a cmake,修复需手动将对应 bin 目录加入 path 并重启终端。

cmake --version 返回 command not found 是最常见卡住的起点
这不是安装卡住,是根本没装进系统 PATH。Windows 上漏勾 Add CMake to the system PATH for all users、macOS 下拖拽安装后没配 /Applications/CMake.app/Contents/bin 到 PATH、Linux 用 apt install cmake 装了但版本太旧(比如 Ubuntu 22.04 的 3.22),都表现为终端里敲 cmake 直接报错。
验证方式很简单:which cmake 返回空,或 type -a cmake 只列出 cmake3 而没有 cmake,就说明命令不可见。别急着重装,先查 PATH 顺序:echo $PATH,确认你装的 bin 目录是否在最前面。
- Windows:重装时务必勾选环境变量选项;已装好但没生效?手动把
C:\Program Files\CMake\bin加到系统 PATH,重启 CMD/PowerShell - macOS:拖拽安装后执行
sudo ln -s "/Applications/CMake.app/Contents/bin/cmake" /usr/local/bin/cmake - Linux:避免
sudo apt install cmake,改用官网二进制包,解压后加$HOME/cmake/bin到~/.bashrc或~/.zshrc
cmake -H. -Bbuild 卡在“Looking for ccache”或反复下载 ippicv
这其实是网络 + 内存双重卡死,不是 CMake 本身坏了。树莓派上尤其典型:桌面环境占掉 500MB 内存,CMake 解析 OpenCV 数千个 CMakeLists.txt 时触发 OOM Killer;同时 OPENCV_DNN_DOWNLOADS=ON 默认开启,尝试从 GitHub 拉 ippicv_20200512_lnx.tar.gz,国内直连超时重试 3 次就卡住不动。
- 关 GUI:
sudo systemctl set-default multi-user.target && sudo reboot,纯命令行下再跑 - 禁远程下载:加参数
-D OPENCV_DNN_DOWNLOADS=OFF -D OPENCV_ENABLE_FAST_MATH=ON - 换低内存模式:加
-D CMAKE_BUILD_TYPE=RELEASE -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF - 手动预置依赖:提前下载
ippicv和protobuf-cpptar 包,放opencv/3rdparty/ippicv下,CMake 会跳过网络拉取
configure 阶段卡住几小时,日志停在 find_package(OpenMP REQUIRED)
这是 CMake 版本兼容性问题。Raspberry Pi OS Bullseye 自带 cmake 3.18.4,而 OpenCV 4.8+ 的 modules/core/CMakeLists.txt 用了 find_package(OpenMP REQUIRED) —— 这个 REQUIRED 关键字在 CMake 3.20 才正式支持,旧版解析器不报错也不继续,直接静默挂起。
别硬等,也别盲目升级系统级 CMake(可能破坏 apt 依赖)。直接下载新版二进制:
- 去
https://github.com/Kitware/CMake/releases下cmake-3.29.2-linux-arm64.sh(树莓派 4B/5 选 arm64) -
chmod +x cmake-3.29.2-linux-arm64.sh,然后./cmake-3.29.2-linux-arm64.sh --prefix=$HOME/cmake --skip-license -
export PATH=$HOME/cmake/bin:$PATH,再运行cmake --version确认输出是 3.29.2
注意:不要用 curl | sh 方式安装,那个脚本已停更,容易拉到不可信内容。
MSYS2 安装卡在 50% 或 pacman -Syu 更新失败
MSYS2 的安装器和包管理器都严重依赖境外源,卡住基本等于网络不通。Windows 上没代理的话,ucrt64.exe 启动后首次 pacman -Syu 几乎必失败,表现为卡在 “downloading core.db” 或 “resolving dependencies”。
- 强行结束安装进程后,直接运行
ucrt64.exe,它其实已经装好了基础环境 - 启动后立刻执行:
pacman-mirrors -i -c China -d -y(需先pacman -S pacman-mirrors),切清华或中科大镜像 - 再运行
pacman -Syu,如果还卡,加--noconfirm和--disable-download绕过校验 - 装
gcc、make、cmake时,用pacman -S mingw-w64-ucrt-x86_64-cmake明确指定 ucrt64 工具链,别只写cmake
真正容易被忽略的是:MSYS2 的 cmake 命令默认走的是 mingw64 或 ucrt64 子环境,不是 Windows 原生 cmd 里的那个。跨环境调用前,必须确认 shell 类型和 PATH 优先级。











