目标驱动极简ninja-build教学😂

原因:Windows 没有 make。(高端的目的,往往只需要最朴素的动力)

1. 构建的规则

rule cc
  command = clang $cflags -c $in -o $out

  description = CC $in -> $out

解释:$in 是规则的输入,$out 是规则的输出,由此可以看出,变量前缀为 $command 是规则要执行的命令,description 是运行这个规则时候终端的输出。

2. 构建什么东西的规则

build 输出: 规则 输入
build a.o: cc a.c

3. 清理规则

rule CLEAN
  command = ninja -t clean all
  description = cleaning all built files...

build clean: phony CLEAN

4. all 规则 | 一个规则依赖多个规则

build all: phony a b c
default all # 默认规则声明

有个坑是 build xxx: phony yyyyyy 这里要是多个规则的话,要写 build 语句定义的目标(xxx部分),前面的 CLEAN 是一个目标(可能是例外吧(不懂))

5. 变量

CC = clang
cflags = -d -Od

6. 多条命令咋办?

官网建议你用 && 连接命令,或者比如 cmd /c,在不如前面第 4 就在将一个规则怎么对应多个规则。

7. 其实这玩意不建议手写,建议生成(笑)

@mashiro 直接在电脑端手写的,我的换行怎么都没了? :pio_die:

Follow

@literalkernel 换行不能用一个点,必须用三个点

· · Web · 1 · 0 · 0

@literalkernel 发现你的pre区块样式没有显示出来,你是不是添加过自定义css?

@literalkernel 你写错了,markdown没有txt这个类型

line
line
line
line
line
line
Sign in to participate in the conversation
小森林

每个人都有属于自己的一片森林,也许我们从来不曾走过,但它一直在那里,总会在那里。迷失的人迷失了,相逢的人会再相逢。愿这里,成为属于你的小森林。