makefile

1.makefile:

        makefile文件是用来管理项目工程文件,通过执行make命令,make就会解析并执行makefile文件。

        makefile命名:makefile或者Makefile

1.1makefile的基本规则

#目标:依赖
#(tab)命令

main:main.c fun1.c fun2.c sum.c
    gcc -o main main.c fun1.c fun2.c sum.c

 

main:main.o fun1.o fun2.o sum.o
    gcc -o main main.o fun1.o fun2.o sum.o

main.o:main.c
    gcc -c  main.c -I./

fun1.o:fun1.c
    gcc -c  fun1.c

fun2.o:fun2.c
    gcc -c  fun2.c

sun.o:sum.c
    gcc -c  sum.c

1.2 makefile中的变量

makefile有三种类型变量:

        普通变量,自带变量,自动变量。

变量定义直接用=,使用变量用$

foo=abc
bar=$(foo)
几个自带变量
CC= gcc # arm-linux-gcc
CPPFLAGS: C预处理选项 -I
CFLAGS:   C编译器的选项 -Wall -g -c
LDFLAGS:    连接器选项 -L -I

自动变量:

# $@: 表示规则中的目标
# $<: 表示规则中的第一个条件
# $^: 表示规则中的所有条件,组成一个列表,以空格隔开,如果有重复选项,则消除重复项。

target = main    #自定义变量
objects = main.o fun1.o fun2.o sum.o    #自定义变量
CC = gcc    #自带变量
CPPFLAGS=-I./    #自带变量

#自动变量只能用在命令中

$(target):$(objects)
    $(CC) -o $@ $^
main.o:main.c
    $(CC) -c  $< $(CPPFLAGS)

fun1.o:fun1.c
    $(CC) -c  $<

fun2.o:fun2.c
    $(CC) -c  $<

sun.o:sum.c
    $(CC) -c  $<

  模式规则

        %.o:%.c ------------>前后的%必须是相同的

1.3 makefile函数

makefile中的函数有很多,这里介绍两个最常用的:

1.        wildcard- 查找指定目录下的指定类型的文件

#wildcard- 查找指定目录下的指定类型的文件
src=$(wildcard *.c)    #找到当前目录下所有后缀为.c的文件,赋值给src

#patsubst ---->匹配替换
obj = $(patsubst %c,%.o,$(src))    #把src变量里所有后缀名为.c的文件全部替换成.o

改进的makefile程序

vi makefile

target=main
src=$(wildcard *.c)
objects=$(patsubst %.c,%.o,$(src))
CC=gcc
CPPFLAGS=-I./
$(target):$(objects)
    $(CC) -o $@ $^

%.o:%.c
    $(CC) -c $< $(CPPFLAGS)

1.4 makefile的清理操作

vi makefile

target=main
src=$(wildcard *.c)
objects=$(patsubst %.c,%.o,$(src))
CC=gcc
CPPFLAGS=-I./
$(target):$(objects)
    $(CC) -o $@ $^

%.o:%.c
    $(CC) -c $< $(CPPFLAGS)

.PHONY:clean
clean:
    rm -f $(objects) $(target)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值