Skip to content

Commit

Permalink
docs: add makefile var (jaywcjlove#207)
Browse files Browse the repository at this point in the history
  • Loading branch information
fwqaaq authored Dec 5, 2022
1 parent cd599f7 commit b3d7fb1
Showing 1 changed file with 74 additions and 1 deletion.
75 changes: 74 additions & 1 deletion docs/make.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,23 @@ VARIABLE ?= value
VARIABLE += value
```

#### override

如果变量前不指定 `override`,那么命令行中指定的变量可以对 Makefile 中的变量重新定义。

```makefile
# 不会重新定义
override VARIABLE = value
override VARIABLE := value
override VARIABLE ?= value
override VARIABLE += value
override define
#...
endef
```

<!--rehype:className=auto-wrap-->

### 变量

需要使用 `$()` 或者 `${}` 对变量进行引用
Expand Down Expand Up @@ -284,7 +301,7 @@ $ make main
# 此时 cc main.c -o main
```

#### `$&`
#### `$%`

`$%`: 仅当目标是函数库文件中,表示规则中的目标成员名

Expand All @@ -293,6 +310,62 @@ $ make main

<!--rehype:className=style-round-->

### 内置命名变量的参数
<!--rehype:wrap-class=col-span-2-->

这些变量都是相关下面的命令的参数。如果没有指明其默认值,那么其默认值都是空。

:- | :-
:- | :-
`ARFLAGS` | 函数库打包程序AR命令的参数。默认值是 `rv`
`ASFLAGS` | 汇编语言编译器参数。(当明显地调用 `.s``.S` 文件时)
`CFLAGS` | C 语言编译器参数。
`CXXFLAGS` | C++ 语言编译器参数。
`COFLAGS` | RCS 命令参数。
`CPPFLAGS` | C 预处理器参数。( `C``Fortran` 编译器也会用到)。
`FFLAGS` | Fortran 语言编译器参数。
`GFLAGS` | SCCS `get` 程序参数。
`LDFLAGS` | 链接器参数。(如:`ld`
`PFLAGS` | Pascal 语言编译器参数。
`LFLAGS` | Lex 文法分析器参数。
`RFLAGS` | Ratfor 程序的 Fortran 编译器参数。
`YFLAGS` | Yacc 文法分析器参数。
<!--rehype:className=left-align-->

### 内置已命名的变量
<!--rehype:wrap-class=col-span-2-->

:- | :-
:- | :-
`AR` | 函数库打包程序。默认命令是 `ar`
`AS` | 汇编语言编译程序。默认命令是 `as`
`CC` | C 语言编译程序。默认命令是 `cc`
`CXX` | C++ 语言编译程序。默认命令是 `g++`
`CO` | 从 RCS 文件中扩展文件程序。默认命令是 `co`
`CPP` | C 程序的预处理器(输出是标准输出设备)。默认命令是 `$(CC) –E`
`FC` | Fortran 和 Ratfor 的编译器和预处理程序。默认命令是 `f77`
`GET` | 从 SCCS 文件中扩展文件的程序。默认命令是 `get`
`LEX` | Lex 方法分析器程序(针对于 C 或 Ratfor)。默认命令是 `lex`
`PC` | Pascal 语言编译程序。默认命令是 `pc`
`YACC` | Yacc 文法分析器(针对于 C 程序)。默认命令是 `yacc`
`YACCR` | Yacc 文法分析器(针对于 Ratfor 程序)。默认命令是 `yacc –r`
`MAKEINFO` | 转换 Texinfo 源文件(.texi)到 Info 文件程序。默认命令是 `makeinfo`
`TEX` | 从 TeX 源文件创建TeX DVI文件的程序。默认命令是 `tex`
`TEXI2DVI` | 从 Texinfo 源文件创建 TeX DVI 文件的程序。默认命令是 `texi2dvi`
`WEAVE` | 转换 Web 到 TeX 的程序。默认命令是 `weave`
`CWEAVE` | 转换 C Web 到 TeX 的程序。默认命令是 `cweave`
`TANGLE` | 转换 Web 到 Pascal 语言的程序。默认命令是 `tangle`
`CTANGLE` | 转换 C Web 到 C。默认命令是 `ctangle`
`RM` | 删除文件命令。默认命令是 `rm –f`
<!--rehype:className=left-align-->

#### 内置的变量

```makefile
run:
${CC} -o main main.c
```

另见
---

Expand Down

0 comments on commit b3d7fb1

Please sign in to comment.