文档章节

ninja文档

zhangyujsj
 zhangyujsj
发布于 2015/08/23 15:02
字数 792
阅读 160
收藏 0

build指定了编译的依赖关系等

rule指定了编译的规则也就是编译命令等,就是指定从依赖的文件如何形成目标文件的。

ninja中同样有一些变量,通过$来引用不用加任何括号的

注意,在rule中同样也是定义一些变量,但是这些变量是ninja内部指定的。下面是这些特殊变量的文档

A rule block contains a list of key = value declarations that
affect the processing of the rule.  Here is a full list of special
keys.
command (required)
the command line to run.  This string (after
  $variables are expanded) is passed directly to sh -c without
  interpretation by Ninja. Each rule may have only one command
  declaration. To specify multiple commands use && (or similar) to
  concatenate operations.
depfile
path to an optional Makefile that contains extra  implicit dependencies (see the reference on   dependency types).  This is explicitly to support C/C++ header
  dependencies; see the full discussion.
deps
(Available since Ninja 1.3.) if present, must be one of  gcc or msvc to specify special dependency processing.  See   the full discussion.  The generated database is
   stored as .ninja_deps in the builddir, see the    discussion of builddir.
msvc_deps_prefix
(Available since Ninja 1.5.) defines the string
  which should be stripped from msvc’s /showIncludes output. Only
  needed when deps = msvc and no English Visual Studio version is used.
description
a short description of the command, used to pretty-print
  the command as it’s running.  The -v flag controls whether to print
  the full command or its description; if a command fails, the full command
  line will always be printed before the command’s output.
generator
if present, specifies that this rule is used to
  re-invoke the generator program.  Files built using generator
  rules are treated specially in two ways: firstly, they will not be
  rebuilt if the command line changes; and secondly, they are not
  cleaned by default.
in
the space-separated list of files provided as inputs to the build line
  referencing this rule, shell-quoted if it appears in commands.  ($in is
  provided solely for convenience; if you need some subset or variant of this
  list of files, just construct a new variable with that list and use
  that instead.)
in_newline
the same as $in except that multiple inputs are
  separated by newlines rather than spaces.  (For use with  $rspfile_content; this works around a bug in the MSVC linker where
  it uses a fixed-size buffer for processing input.)
out
the space-separated list of files provided as outputs to the build line
  referencing this rule, shell-quoted if it appears in commands.
restat
if present, causes Ninja to re-stat the command’s outputs
  after execution of the command.  Each output whose modification time
  the command did not change will be treated as though it had never
  needed to be built.  This may cause the output’s reverse
  dependencies to be removed from the list of pending build actions.
rspfile, rspfile_content
if present (both), Ninja will use a
  response file for the given command, i.e. write the selected string
  (rspfile_content) to the given file (rspfile) before calling the
  command and delete the file after successful execution of the
  command.
This is particularly useful on Windows OS, where the maximal length of
a command line is limited and response files must be used instead.
Use it like in the following example:
rule link
  command = link.exe /OUT$out [usual link flags here] @$out.rsp
  rspfile = $out.rsp
  rspfile_content = $in

build myapp.exe: link a.obj b.obj [possibly many other .obj files]

同样只要是变量就需要赋值。注意rule的内容需要另起一行,并且必须要空格而不是tab按键。

编译语句的格式为

build 输出文件: 规则名 输入文件。注意这个语句中的输出文件和输入文件将会成为rule中的对应的$in,$out

可以在build语句的后面换行提供类似于key=value这样的键值对在当前的这个build中来临时shadow掉在当前的编译文件中的那些变量。也就是说这样指定的键值对本次会输入到对应的rule中去。






© 著作权归作者所有

共有 人打赏支持
zhangyujsj
粉丝 24
博文 358
码字总数 224241
作品 0
广州
私信 提问
FaceBook APP构建工具--xcbuild

Facebook 出品的开源 App 构建工具,一款能够为 App 构建过程与多平台运行提供更快构建、更好文档并兼容 Xcode 的构建工具,超快的增量构建和构建频率;支持构建 Xcode 项目和 workspace;支...

匿名
2016/03/08
409
0
【BLE_Mesh】01,Nordic_nRF51-DK之BLE_Mesh编译

一,背景 偶然在网上看见“蓝牙技术联盟正式发布蓝牙Mesh技术”的新闻,而手头正好有两块闲置的Nordic_nRF51-DK,就瞎捣鼓了一番。 因为看见蓝牙mesh的介绍特别有诱惑力:“全新的Mesh功能提供...

u014572382
2017/08/18
0
0
Skia构建系统与编译脚本分析

版权声明:本文为foruok原创文章,转载请通过订阅号“程序视界”联系foruok获取授权。 https://blog.csdn.net/foruok/article/details/50699101 分析下Skia的构建系统,具体编译过程参看Win...

foruok
2016/02/19
0
0
10 个最新的开发者工具

1. Ninja - HTML5 设计工具 Ninja 是全功能的 HTML5 Web 设计工具。目前 Ninja 支持可视化地设计和制作HTML5动画,并完全支持CSS 3D效果。 2. jsPDF - 用 JS 生成 PDF jsPDF 是一个免费的 Ja...

oschina
2012/09/14
7.8K
22
HTML5设计工具--Ninja

Motolora 发布了Motorola Ninja这款开源HTML5设计工具。Ninja总共不到10M的身躯比功能类似的Edge要简洁很多(并不是说Ninja比Edge好)。 如何安装: 源文件安装可以参考Ninja GitHub托管页面...

匿名
2012/07/18
10.6K
0

没有更多内容

加载失败,请刷新页面

加载更多

Pure-ftpd搭建FTP

12月11日任务 15.4 xshell使用xftp传输文件 15.5 使用pure-ftpd搭建ftp服务 使用pure-ftpd搭建FTP服务 轻量的ftp软件 安装pure-ftpd并修改配置文件 # pure-ftpd为epel扩展库里的软件[root...

robertt15
13分钟前
2
0
开源 serverless 产品原理剖析(二) - Fission

背景 本文是开源 serverless 产品原理剖析系列文章的第二篇,关于 serverless 背景知识的介绍可参考文章开源 serverless 产品原理剖析(一) - Kubeless,这里不再赘述。 Fission 简介 Fiss...

阿里云官方博客
20分钟前
1
0
Android面试整理(附答案)

面试,无非都是问上面这些问题(挺多的 - -!),聘请中高级的安卓开发会往深的去问,并且会问一延伸二。以下我先提出几点重点,是面试官基本必问的问题,请一定要去了解! 基础知识 – 四大组...

终端研发部
24分钟前
3
0
Vue 改变数组触发视图更新

Vue 改变数组触发视图更新 以下方法调用会改变原始数组 push(), pop(), shift(), unshift(), splice(), sort(), reverse()push()push() 方法可向数组的末尾添加一个或多个元素,并返回新的...

不负好时光
30分钟前
2
0
计算机系统要素 C5

本章值得一提的是组织计算机的结构。Hack 的指令和数据是分开存储的,因此它的 CPU 有两个 input: IN inM[16], // M value input (M = contents of RAM[A]) instruction[16],...

lionets
46分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部