makefile的使用

makefile的构成

makefile 由若干条的规则构成
规则:
(tatger)目标:prerequisites(依赖)
  command(命令)

例子1:

hello:main.o func1.o func2.o
  gcc main.o func1.o func2.o -o hello

例子2:

清除文件:
clean:
  rm main.o func1.o func2.o
使用:
make clean

用户自定义变量

MObj=main.0 func1.o func2.o(类似于宏定义)
 hello:$(MObj)

预定义变量

变量名用法
AR库文件维护程序的名称,默认值为ar
AS汇编程序的名称,默认值为as
CCC编译器的名称,默认值为cc
CXXC++编译器的名称,默认值为g++;
ARFKAGS库文件维护程序选项,无默认值
ASFFLAGS汇编程序选项,无默认值
CFLAGSC编译器选项,无默认值
CXXFLAGSC++编译器选项,无默认值

举例:
CFLAGS = -g -c
CC=gcc
   $(CC) $(CFLAGS) func2.c(等价于 gcc -g -c func2.c)

自动变量及环境变量

变量名用法
$*不包含扩展名的目标文件名称
$*第一个依赖文件名称
$?所有时间戳比目标文件晚的依赖文件
$@目标文件完整名称
$^所有不重复的依赖文件

举例:
gcc $^ -o $@ (相当于gcc mian.0 func1.o func2.o -o hello)

make的工作流程

1、make会在当前目录下找名字叫"Makefile"或“makefle"的文件。
2、如果找到,它会找文件中的第一个目标文件(target) 并把这个文件作为最 终的目标文件。
3、根据时自戳生成目标文件。
4、递归去寻找目标文件依赖文件,并且递归生成(同样有时间戳问题)。

伪目标

用伪目标生成多个文件
all : prog1 prog2 prog3
  .PHONY : allI
prog1 : prog1.0 utils.c
  cc -0 prog1 prog1.0 utils.o
prog2 : prog2.0
  cc -0 prog2 prog2.0
prog3 ; prog3.0 sort.o utils.o

在这里插入图片描述

包含:

include proc/makefile

嵌套:

subsystem:
  cd subdir&&gcc -c main.c (等价于 gcc -c main.c -C subdir)

条件判断(不能按tab):

MObj=main.0 func1.o func2.o(类似于宏定义)
CC=gcc
hello:$ (MObj)
ifeq($ (CC),gcc)
  $(CC) $^ -o $@
else
  gcc $^ -o $@
endif

makefile管理命令

命令用法
-C dir读入指定目录下面的makefile
-f file读入当前目录下的le文件为makeile
-i忽略所有命令执行错误
-i dir指定被包含的makefile所在目录
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值