Ninja 是一个注重速度的小型构建系统。
如果不使用 systemd,本节内容不是严格必要的。但是,Ninja 和 Meson 组成一个强大的构建系统,预期这一组合将被越来越广泛地使用。BLFS 手册中的一些软件包需要它。
在运行时,ninja 通常并行运行尽可能多的进程。默认情况下最大进程数是系统 CPU 核心数加 2 得到的值。这可能导致 CPU 过热,或者耗尽系统内存。如果使用命令行执行 ninja,可以传递 -jN 参数以限制并行进程数。但是,某些软件包内嵌了 ninja 的执行过程,且并不传递 -j 参数。
应用下面这个可选的修改,用户即可通过一个环境变量 NINJAJOBS 限制并行进程数量。例如设置:
export NINJAJOBS=4
会限制 ninja 使用 4 个并行进程。
如果希望 ninja 能够识别环境变量 NINJAJOBS,使用流编辑器,添加这一功能:
sed -i '/int Guess/a \ int j = 0;\ char* jobs = getenv( "NINJAJOBS" );\ if ( jobs != NULL ) j = atoi( jobs );\ if ( j > 0 ) return j;\ ' src/ninja.cc
构建 Ninja:
python3 configure.py --bootstrap
构建选项的含义:
--bootstrap
这个参数强制 Ninja 为当前系统重新构建自身。
运行命令以测试编译结果:
./ninja ninja_test ./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
安装该软件包:
install -vm755 ninja /usr/bin/ install -vDm644 misc/bash-completion /usr/share/bash-completion/completions/ninja install -vDm644 misc/zsh-completion /usr/share/zsh/site-functions/_ninja