Fuchsia中GN与Ninja构建demo

# 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内部数据结构
发布了748 篇原创文章 · 获赞 458 · 访问量 243万+

猜你喜欢

转载自blog.csdn.net/u010164190/article/details/104905195