Makefile文件简介

来源:互联网 发布:http index.php 编辑:程序博客网 时间:2024/05/20 08:24

make根据时间戳来管理文件
Makefile是make读入的唯一配置文件
 
target : dependency_file
<TAB> command
 
解释下:target 是目标文件名
       dependency_file 是所依赖的文件列表
       <TAB>  是按下键盘中的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
下载:下载

原创粉丝点击