Linux系统编程 37 -makefile2个函数和clean

Linux系统编程 37 -makefile2个函数和clean

学习笔记
一个makefile 就是用一个个规则凑在一起


2个函数
wildcard
patsubst

wildcard 百搭牌,通配符
src = $(wildcard *.c)

 $(wildcard *.c)表示函数调用
 wildcard        表示函数名
 *.c             表示函数的参数
 函数调用完以后的返回值交给src
 
 这个函数的作用可以把所有以.c文件 匹配上
 把文件名提取出来,作为一个列表赋值给src
 
  $(wildcard *.c) =  $(wildcard ./*.c):匹配当前目录下的所有.c文件  
  将文件名组成列表,赋值给变量src。
  
src=add.c sub.c div1.c

patsubst 匹配和替换

obj=$(patsubst %.c,%.o,$(src)):将参数3中,包含参数1的部分,替换为参数2.
obj=add.o sub.o div1.o


修改makefile 文件

$cat makefile
src=$(wildcard ./*.c) #add.c div1.c sub.c hello.c
obj=$(patsubst %.c,%.o,$(src)) #add.o div1.o sub.o hello.o

ALL:a.out

a.out:$(obj)
    gcc $(obj) -o a.out


hello.o:hello.c
    gcc -c hello.c -o hello.o

add.o:add.c
    gcc -c add.c -o add.o

sub.o:sub.c
    gcc -c sub.c -o sub.o

div1.o:div1.c
    gcc -c div1.c -o div1.o


    
    
make    
    

$make
make: Nothing to be done for `ALL'.
$rm ./*.o
$make
gcc -c add.c -o add.o
gcc -c div1.c -o div1.o
gcc -c hello.c -o hello.o
gcc -c sub.c -o sub.o
gcc ./add.o ./div1.o ./hello.o ./sub.o  -o a.out
$./a.out
10+5 = 15
10-5 = 5
10/5 = 1


添加clean
在makefile 中添加:

clean:
    -rm -rf $(obj) a.out


    

$make clean
rm -rf ./add.o ./div1.o ./hello.o ./sub.o  a.out


注意:
$make clean -n
模拟执行一遍接下来要干的事情

$ls
add.c  a.out  div1.c  hello.c  m1        makefile.old  sub.o
add.o  div1.  div1.o  hello.o  makefile  sub.c
$make clean -n
rm -rf ./add.o ./div1.o ./hello.o ./sub.o  a.out
$ls
add.c  a.out  div1.c  hello.c  m1        makefile.old  sub.o
add.o  div1.  div1.o  hello.o  makefile  sub.c


1.clean规则没有依赖条件。
2.-rm:中的- 目的是删除没有的文件时候,也不会报错。
3.-rf:-r和-f合写,-r表示递归地处理文件,
    即处理该目录及其所有子目录下符合条件的文件;
    -f则是无提示强制删除
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值