From b3d7fb1ea12f8231ce2270092a1c3f6824b633c7 Mon Sep 17 00:00:00 2001 From: fw_qaq <82551626+Jack-Zhang-1314@users.noreply.github.com> Date: Mon, 5 Dec 2022 13:17:26 +0800 Subject: [PATCH] docs: add makefile var (#207) --- docs/make.md | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/docs/make.md b/docs/make.md index 27a2fb9..f0dea06 100644 --- a/docs/make.md +++ b/docs/make.md @@ -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 +``` + + + ### 变量 需要使用 `$()` 或者 `${}` 对变量进行引用 @@ -284,7 +301,7 @@ $ make main # 此时 cc main.c -o main ``` -#### `$&` +#### `$%` `$%`: 仅当目标是函数库文件中,表示规则中的目标成员名 @@ -293,6 +310,62 @@ $ make main +### 内置命名变量的参数 + + +这些变量都是相关下面的命令的参数。如果没有指明其默认值,那么其默认值都是空。 + +:- | :- +:- | :- +`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 文法分析器参数。 + + +### 内置已命名的变量 + + +:- | :- +:- | :- +`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` + + +#### 内置的变量 + +```makefile +run: + ${CC} -o main main.c +``` + 另见 ---