Makefile文件简介

本文深入解析Makefile中如何利用时间戳管理文件及定义目标、依赖和命令,通过具体例子演示预定义变量的作用,以及Make命令的常用选项与执行方式。详细解读Makefile在项目构建中的高效应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
下载:下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值