注意 | 在makefile中的每一个command前必须有“Tab”符,否则在运行make命令时会出错。 |
注意 | 变量名是不包括“:”、“#”、“=”以及结尾空格的任何字符串。同时,变量名中包含字母、数字以及下划线以外的情况应尽量避免,因为它们可能在将来被赋予特别的含义。 变量名是大小写敏感的,例如变量名“foo”、“FOO”、和“Foo”代表不同的变量。 推荐在makefile内部使用小写字母作为变量名,预留大写字母作为控制隐含规则参数或用户重载命令选项参数的变量名。 |
预定义变量 | 含 义 |
AR | 库文件维护程序的名称,默认值为ar |
AS | 汇编程序的名称,默认值为as |
CC | C编译器的名称,默认值为cc |
CPP | C预编译器的名称,默认值为$(CC) –E |
CXX | C++编译器的名称,默认值为g++ |
FC | Fortran编译器的名称,默认值为f77 |
RM | 文件删除程序的名称,默认值为rm –f |
ARFLAGS | 库文件维护程序的选项,无默认值 |
ASFLAGS | 汇编程序的选项,无默认值 |
CFLAGS | C编译器的选项,无默认值 |
CPPFLAGS | C预编译的选项,无默认值 |
CXXFLAGS | C++编译器的选项,无默认值 |
FFLAGS | Fortran编译器的选项,无默认值 |
自 动 变 量 | 含 义 |
$* | 不包含扩展名的目标文件名称 |
$+ | 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件 |
$< | 第一个依赖文件的名称 |
$? | 所有时间戳比目标文件晚的依赖文件,并以空格分开 |
$@ | 目标文件的完整名称 |
$^ | 所有不重复的依赖文件,以空格分开 |
$% | 如果目标是归档成员,则该变量表示目标的归档成员名称 |
注意 | 在隐式规则只能查找到相同文件名的不同后缀名文件,如“kang.o”文件必须由“kang.c”文件生成。 |
对应语言后缀名 | 隐式规则 |
C编译:.c变为.o | $(CC) –c $(CPPFLAGS) $(CFLAGS) |
C++编译:.cc或.C变为.o | $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) |
Pascal编译:.p变为.o | $(PC) -c $(PFLAGS) |
Fortran编译:.r变为-o | $(FC) -c $(FFLAGS) |
命 令 格 式 | 含 义 |
-C dir | 读入指定目录下的makefile |
-f file | 读入当前目录下的file文件作为makefile |
-I | 忽略所有的命令执行错误 |
-I dir | 指定被包含的makefile所在目录 |
-n | 只打印要执行的命令,但不执行这些命令 |
-p | 显示make变量数据库和隐含规则 |
-s | 在执行命令时不显示命令 |
-w | 如果make在执行过程中改变目录,则打印当前目录名 |
欢迎光临 DIY编程器网 (http://diybcq.com./) | Powered by Discuz! X3.2 |