最近在折腾一个C++项目时,发现很多开源项目都开始用ninja作为构建工具。作为一个追求编译速度的开发者,我决定在Windows上配置一套ninja环境。说实话,第一次配置时踩了不少坑,今天就把完整的搭建过程分享给大家,保证新手也能轻松搞定。
ninja是一个专注于速度的小型构建系统,特别适合大型项目。它不像CMake那样功能全面,但在编译速度上优势明显。很多知名项目如Chrome、LLVM都在使用。在Windows上配置ninja需要准备几个必备组件:Git用于源码管理、Python作为运行环境,以及Visual Studio SDK提供编译工具链。
首先确认你的Windows系统版本。我测试过Windows 10和11都能完美运行,建议使用最新版本的系统。内存最好4GB以上,虽然ninja本身很轻量,但编译大型项目时内存消耗会比较大。
打开命令提示符,输入以下命令检查系统基本信息:
bash复制systeminfo | findstr /B /C:"OS 名称" /C:"OS 版本"
ninja的源码托管在GitHub上,所以我们需要先安装Git。推荐使用官方最新版本:
bash复制git --version
我建议使用Git Bash作为命令行工具,比Windows自带的CMD好用很多。安装时还可以勾选"Use Windows' default console window",这样在VSCode中也能正常使用。
ninja的构建脚本是用Python写的,所以需要Python环境。注意要安装Python 3.x版本:
bash复制python --version
pip --version
建议创建一个虚拟环境专门用于构建工具:
bash复制python -m venv build-env
build-env\Scripts\activate
ninja需要Visual Studio的C++编译工具链。我测试过VS2015到VS2022都能正常工作。如果你没有安装VS,可以直接安装Build Tools版本:
安装完成后,需要找到vcvarsall.bat的位置。通常路径是:
code复制C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat
可以用这个命令验证:
bash复制where vcvarsall.bat
建议直接从官方仓库克隆最新代码:
bash复制git clone https://github.com/ninja-build/ninja.git
cd ninja
如果网络不太稳定,可以考虑使用镜像源,比如:
bash复制git clone https://gitee.com/mirrors/ninja.git
进入仓库后,切换到最新的release分支:
bash复制git checkout release
如果想使用特定版本,可以先查看所有tag:
bash复制git tag -l
然后切换到指定版本,比如:
bash复制git checkout v1.11.0
在开始编译前,需要先设置VS的环境变量。有两种方式:
bash复制"路径\to\vcvarsall.bat" x64
在配置好的命令行中,运行构建脚本:
bash复制python configure.py --bootstrap
这个过程会:
如果一切顺利,你会看到类似输出:
code复制[1/1] LINK ninja.exe
为了方便使用,建议把ninja.exe所在目录加入系统PATH:
打开新的命令提示符,验证安装:
bash复制ninja --version
应该会输出类似:
code复制1.11.0
ninja经常和CMake配合使用。安装CMake后,可以这样生成ninja构建文件:
bash复制cmake -G "Ninja" ..
ninja的一个优势是支持并行编译。可以通过-j参数指定线程数:
bash复制ninja -j 8
这个数字建议设置为CPU核心数的1-1.5倍。可以用以下命令查看核心数:
bash复制wmic cpu get NumberOfCores
如果遇到Python相关错误,首先检查:
bash复制pip install -r requirements.txt
编译失败通常是因为缺少VS组件。可以尝试:
如果觉得编译速度不够快,可以:
我在实际项目中使用ninja后,大型项目的编译时间从原来的30分钟缩短到了10分钟左右,效果非常明显。特别是在频繁修改代码后的增量编译场景,ninja的优势更加突出。