使用CMake和Ninja编译Aseprite源码时遇C编译器识别错误
解决CMake+Ninja编译Aseprite时的CMAKE_C_COMPILER-NOTFOUND错误
这个错误本质是CMake压根找不到你的C编译器,连最基础的编译器识别文件CMakeCCompilerId.c都没法编译执行。下面是一步步排查和解决的具体方法:
1. 先确认C/C++编译器是否安装
- Windows用户:要么装Visual Studio(一定要勾选「Desktop development with C++」工作负载,它包含MSVC编译器),要么装MinGW-w64;
- macOS用户:终端运行
xcode-select --install,安装Xcode命令行工具; - Linux用户:Ubuntu/Debian系跑
sudo apt install build-essential,CentOS/RHEL系跑sudo dnf install gcc gcc-c++,把gcc/g++这类编译器装上。
2. 确保CMake能识别到编译器
- 如果用Visual Studio:别随便开个终端就跑命令,要打开「x64 Native Tools Command Prompt for VS」(对应你的VS版本),在这个终端里执行CMake和Ninja操作——这个终端会自动配置好MSVC的环境变量,CMake能直接找到编译器;
- 如果用MinGW/macOS/Linux:先在终端里跑
gcc --version或者clang --version,能正常输出版本号说明编译器路径在PATH环境变量里;要是报错,得手动把编译器的bin目录添加到系统PATH里。
3. 手动指定编译器(自动检测失效时)
要是CMake还是找不到,你可以在执行CMake命令时直接指定C/C++编译器:
# GCC的情况 cmake -G Ninja -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ .. # Clang的情况 cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. # Windows下MSVC的特殊情况(一般开对应终端不用指定,特殊场景可以试试) cmake -G Ninja -DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.exe ..
4. 清理旧缓存后重试
之前的错误缓存可能干扰新的检测,先删掉build目录里的CMakeCache.txt和CMakeFiles文件夹,再重新执行CMake初始化命令。
补充一句:Aseprite编译对环境依赖要求比较严,后续还要按官方要求装Skia等依赖,但当前这个错误是编译器识别问题,先把这个解决了再处理其他环节。
内容的提问来源于stack exchange,提问作者S. Rigato
相关产品推荐
相关产品推荐

