make根据时间戳来管理文件
Makefile是make读入的唯一配置文件
target : dependency_file
command
解释下:target 是目标文件名
dependency_file 是所依赖的文件列表
是按下键盘中的TAB按键
command 生成target的命令
下面是一个例子:
#It is a example for describing makefile
prog : filea.o fileb.o filec.o
cc filea.o fileb.o filec.o -LS -o prog
filea.o : filea.c a.h defs
cc -c filea.c
fileb.o : fileb.c b.h defs
cc -c fileb.c
filec.o : filec.c c.h
cc -c filec.c
预定义变量 含义
$*
不包含扩展名的目标文件名称。
$+
所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$<
第一个依赖文件的名称。
$?
所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@
目标的完整名称。
$^
所有的依赖文件,以空格分开,不包含重复的依赖文件。
$%
如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称为
(image.o),则 $@ 为 ,而 $% 为 image.o。
AR
归档维护程序的名称,默认值为 ar。
ARFLAGS
归档维护程序的选项。
AS
汇编程序的名称,默认值为 as。
ASFLAGS
汇编程序的选项。
CC
C 编译器的名称,默认值为 cc。
CFLAGS
C 编译器的选项。
CPP
C 预编译器的名称,默认值为 $(CC) -E。
CPPFLAGS
C 预编译的选项。
CXX
C++ 编译器的名称,默认值为 g++。
CXXFLAGS
C++ 编译器的选项。
FC
FORTRAN 编译器的名称,默认值为 f77。
FFLAGS
FORTRAN 编译器的选项。
Makefile以文件名:文件名的形式比较冒号右边的文件是不是较左边的文件有更新,如果有更新则执行下一行的程序代码。因此Makefile可以把文件关联起来
变量的定义:
递归展开方式: VAR = var
简单方式 : VAR := avr
变量的使用:$(VAR)
FOO ?= bar ?判断FOO是否已经有值,若没有就定义为bar
Main +=hello-2.o 在原来的基础上新增加hello-2.o
执行make命令时先找目录下的makefile ,再找Makefile
make有很多选项:
-C dir 读入指定目录下的Makefile文件
-n 只打印要执行的命令,不执行
-f 指定当前目录下的某文件作为Makefile
-s 在执行命令时不显示 (或者在命令前加上@也可以)
下面是一个make较常用的管理方式
|
文件: |
make.zip |
大小: |
2KB |
下载: |
下载 | |
阅读(482) | 评论(0) | 转发(0) |