目标驱动极简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 yyy 的 yyy 这里要是多个规则的话,要写 build 语句定义的目标(xxx部分),前面的 CLEAN 是一个目标(可能是例外吧(不懂))
5. 变量
CC = clang
cflags = -d -Od
6. 多条命令咋办?
官网建议你用 && 连接命令,或者比如 cmd /c,在不如前面第 4 就在将一个规则怎么对应多个规则。
7. 其实这玩意不建议手写,建议生成(笑)
@literalkernel 换行不能用一个点,必须用三个点