makefile中符号含义集合

$*               不包含扩展名的目标文件名称。
$+               所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$<               第一个依赖文件的名称。
$?               所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@               目标的完整名称。
$^               所有的依赖文件,以空格分开,不包含重复的依赖文件。
$%               如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称
                 为 mytarget.so(image.o),则 $@ 为 mytarget.so,而 $% 为 image.o。
AR               归档维护程序的名称,默认值为 ar。
ARFLAGS          归档维护程序的选项。
AS               汇编程序的名称,默认值为 as。
ASFLAGS          汇编程序的选项。
CC               C 编译器的名称,默认值为 cc。
CCFLAGS          C 编译器的选项。
CPP              C 预编译器的名称,默认值为 $(CC) -E。
CPPFLAGS         C 预编译的选项。
CXX              C++ 编译器的名称,默认值为 g++。
CXXFLAGS         C++ 编译器的选项。
FC               FORTRAN 编译器的名称,默认值为 f77。
FFLAGS           FORTRAN 编译器的选项。

如果命令行的第一个或前两个字符是 @ (at 符号)、-(连字符)和 +(加号)这几个符号之一或全部,那么将特别处理该命令,如下:

@    使命令在被执行前不被回显。
-      使任何命令行的任何非零退出状态都被忽略。
+     使命令行可以通过指定 -n、-q 或 -t 选项来执行。


make工具能理解两种类型的前提目标:

Type I: 正常前提目标(Normal Prerequisites)

    正常前提目标能达成两个目的:

    1. 影响build command执行顺序,即:在生成目标(target)的命令被执行前,所有的需要生成的前提目标(Prerequisites)的命令都需要被执行。

    2. 影响依赖关系,即:如果任何一个前提目标(Prerequisites)比生成目标(target)新时,生成目标都将被认为太旧而需要被重新生成。

  通常,上面的这两个目的正是你所需要的:当前提目标更新时,生成目标也需要更新。

 

Type II: 命令前提目标(order-only Prerequisites)

    偶尔的,我们会遇到这样的情况:我们需要执行某个或某些规则,但不能引起生成目标被重新生成。此时你就需要使用命令前提目标。命令前提目标由一个管道符号即竖线“|”指示,位于前提目标列表中。

    竖线左边的目标就是正常前提目标,竖线右边的目标就是命令前提目标,形式如下:

target : normal-prerequisites | order-only-prerequisites


 


留言:
2016/6/26 14:40:20

try {

    修行

} expect {

    吓哭了

}