1、Makefile简介
在一个Makefile文件中,通常包括以下内容:
(1)目标
(2)目标依赖的文件
(3)目标的生成命令
格式为:
target : dependency_files
command
命令command行必须以TAB开头。
使用make target生成目标。这样make可以自动读入Makefile,执行相应的target的command语句,并会找到相应的依赖文件。
在Makefile中,可以使用“\”进行换行;使用“#”进行行注释。
2、Makefile变量
Makefile中可以创建和使用变量。变量是在Makefile中定义的名字,用来代替一个文本字符串,该文本字符串称为该变量的值。
Makefile中的变量定义有两种方式:一种是递归展开方式,一种是简单方式。
递归展开方式的定义格式为:VAR=var
简单方式的定义格式为:VAR:=var
Makefile中变量的使用格式为$(VAR)
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编译器的选项。无默认值。