文档章节

ninja文档

zhangyujsj
 zhangyujsj
发布于 2015/08/23 15:02
字数 792
阅读 152
收藏 0
点赞 0
评论 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
粉丝 23
博文 288
码字总数 224241
作品 0
广州
FaceBook APP构建工具--xcbuild

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

匿名 ⋅ 2016/03/08 ⋅ 0

Skia构建系统与编译脚本分析

分析下Skia的构建系统,具体编译过程参看Windows下从源码编译Skia。这里以ninja为例来分析。执行下面三条命令就可以完成编译: “python bin/sync-and-gyp”会生成ninja脚本。下面来分析脚本...

foruok ⋅ 2016/02/19 ⋅ 0

【BLE_Mesh】01,Nordic_nRF51-DK之BLE_Mesh编译

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

u014572382 ⋅ 2017/08/18 ⋅ 0

10 个最新的开发者工具

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

oschina ⋅ 2012/09/14 ⋅ 22

超越Web,Javascript在物联网的应用

引子 Patrick Catanzariti 是一名Web开发工程师,最近他在 sitepoint 发表了《JavaScript Beyond the Web in 2014》,介绍了JavaScript在物联网中的应用,非常有意思。做为JavaScript的爱好者...

葡萄城控件技术团队 ⋅ 2014/10/15 ⋅ 1

自己手动编译TextMate时,出现的错误信息,要怎么解决呀,谢谢

./configure && ninja的时候出现的问题 make: Nothing to be done for `all'. ninja: error: /Users/iduanyingjie/build/TextMate/build.ninja:2000: unknown pool name 'console' ninja: er......

段英杰 ⋅ 2014/04/30 ⋅ 1

Chromium Android编译指南

先决条件 需要有一台装有Linux操作系统环境的主机来做编译,这个环境的搭建配置方法可以参考Linux-specific build instructions。目前还不支持在其它(Mac/Windows)平台上来为Android编译C...

WolfCS ⋅ 2016/08/03 ⋅ 0

jQuery的界面插件--Ninja UI

jQuery 是一个非常优秀的 JavaScript 框架,而且还有相当多的插件。其中的一些UI插件也相当的给力,比如 Ninja UI,是一款界面插件,使用它将能给你的项目增色不少。此插件包含有幻灯,智能提...

匿名 ⋅ 2011/12/11 ⋅ 2

HTML5设计工具--Ninja

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

匿名 ⋅ 2012/07/18 ⋅ 0

Animation & Spritesheets

A sprite is a single graphic image. It can be moved around the screen, stretched, rotated, skewed, faded and tinted. A spritesheet is a collection of sprites into a single textu......

伽罗kapple ⋅ 2015/08/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IDEA创建SpringMVC+Mybatis+Maven项目

视频如下(加载有点慢请见谅,服务器不太好): 视频

影狼 ⋅ 20分钟前 ⋅ 0

前阿里P8架构师:精准定制Java架构师学习计划!

可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。 有不少朋友问,除了掌握J...

java高级架构牛人 ⋅ 22分钟前 ⋅ 0

zookeper学习

https://blog.csdn.net/u012152619/article/category/6470028

~少司命~ ⋅ 24分钟前 ⋅ 0

Spring MVC ,JSON,JQuery,不懂JQuery,跳过了

/spring-mvc-study/src/main/webapp/course_json.jsp <%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD ......

颖伙虫 ⋅ 24分钟前 ⋅ 0

2018上海云栖大会workshop-日志数据采集与分析对接

摘要: 日志数据采集与分析对接 课程描述 通过日志服务采集用户、数据库、业务等访问数据。演示对于业务日志分析与处理,程序日志查询与监控,打通日志与数据仓库对接案例。 日志种类 网站访...

阿里云云栖社区 ⋅ 25分钟前 ⋅ 0

mahout demo

package com.datamine.CollaborativeFiltering.mysql; import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; import org.apache.mahout.cf.taste.impl.recommend......

xiaomin0322 ⋅ 26分钟前 ⋅ 0

red hat openstack 12配置要求

安装 openstack 之前,一般要规划整个系统中,到底要多少台机器来参与openstack, 根据rhosp12的官方文档: 最低要求是3台物理机,1台作为director,一台作为 controller ,一台作为computer....

tututu_jiang ⋅ 27分钟前 ⋅ 0

Rocket-Chip在GitHub上的各个源码

在github上通过搜索Rocket-chip可以得到36个结果:其中 https://github.com/freechipsproject/rocket-chip https://github.com/ucb-bar/riscv-boom https://github.com/ucb-bar/fpga-zynq (......

whoisliang ⋅ 33分钟前 ⋅ 0

【HAVENT原创】CentOS 6.5 下 Nginx 的安装与配置

nginx是轻量级的Web服务器、反向代理服务器及邮件服务器,具有占用内存少,并发能力强的优点,已被广泛应用。本文介绍目前最新版本 1.12.2 的安装。 各版本nginx下载地址:http://nginx.org/...

HAVENT ⋅ 39分钟前 ⋅ 0

查看linux系统重启之前的log -- last_kmsg

当 Linux Kernel 出现 BUG 的时候,后走入 panic flow,这个时候由于 Kernel 出现了严重的问题,adbd 也无法响应 adb 连接请求,这个时候想透过读取 Kernel Log Buffer 来看 Kernel Log 是不...

zyzzu ⋅ 40分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部