# sudo apt-get install clang ninja-build re2c cmake graphviz gtest
# git clone https://github.com/MeekJeen/GN-for-Ninja.git
# cd GN
# python3 build/gen.py //本目录下生成out目录
# ninja -C out //生成gn
# cd examples/simple_build
# ../../out/gn gen out/default //编译生成.ninja文件
# ../../out/gn args --list out/default //显示参数
# ninja -C out/default -v //ninja使用.ninja脚本编译生成可执行程序
# cd out/default
# ./hello
Hello, world
ninja 工具介绍
# ninja -h
options:
--version # 打印版本信息(如当前版本是1.5.1)
-C DIR # 在执行操作之前,切换到`DIR`目录
-f FILE # 制定`FILE`为构建输入文件。默认文件为当前目录下的`build.ninja`。如 ./ninja -f demo.ninja
-j N # 并行执行 N 个作业。默认N=3(需要对应的CPU支持)。如 ./ninja -j 2 all
-l N # 如果平均负载大于N,不启动新的作业
-k N # 持续构建直到N个作业失败为止。默认N=1
-n # 排练(dry run)(不执行命令,视其成功执行。如 ./ninja -n -t clean)
-v # 显示构建中的所有命令行(这个对实际构建的命令核对非常有用)
-d MODE # 开启调试模式 (用 -d list 罗列所有的模式)
-t TOOL # 执行一个子工具(用 -t list 罗列所有子命令工具)。如 ./ninja -t query all
ninja还集成了graphviz等一些对开发非常有用的工具。具体如下:(也就是执行 ./ninja -t list 的结果)
ninja subtools:
browse # 在浏览器中浏览依赖关系图。(默认会在8080端口启动一个基于python的http服务)
clean # 清除构建生成的文件
commands # 罗列重新构建制定目标所需的所有命令
deps # 显示存储在deps日志中的依赖关系
graph # 为指定目标生成 graphviz dot 文件。如 ninja -t graph all |dot -Tpng -o graph.png
query # 显示一个路径的inputs/outputs
targets # 通过DAG中rule或depth罗列target
compdb # dump JSON兼容的数据库到标准输出
recompact # 重新紧凑化ninja内部数据结构
Fuchsia中GN与Ninja构建demo
猜你喜欢
转载自blog.csdn.net/u010164190/article/details/104905195
今日推荐
周排行