自学Makefile

#三要素
#目标,依赖,命令

#myapp目标 (最终目标,第一行是最终目标)
#:后的文件都是依赖

#step 1
#myapp:main.o plus.o minus.o multi.o divi.o
#    gcc main.o plus.o minus.o multi.o divi.o -o myapp

#目标:main.o
#依赖:mian.c
#命令:gcc -c main.c
#main.o:main.c
#    gcc -c main.c
#plus.o:plus.c
#    gcc -c plus.c
#minus.o:minus.c
#    gcc -c minus.c
#multi.o:multi.c
#    gcc -c multi.c
#divi.0:divi.c
#    gcc -c divi.c

#step2
#变量
#OBJECTS=main.o plus.o minus.o multi.o divi.o

#step 3
#$(wildcard *.c) 用来获取工作目录下的所有 .c源文件
#wildcard : 扩展通配符
SOURCES=$(wildcard *.c)

#把.c后缀,替换成.o后缀
#notdir : 去除路径
#patsubst :替换通配符
OBJECTS=$(patsubst %.c,%.o,$(SOURCES))

myapp:$(OBJECTS)
#自动化变量 $^ 表示所有依赖,$@表示目标
    gcc $^ -o $@

#通配符
#main.o:main.c
%.o:%.c
#gcc -c main.c -o main.o
    gcc -c $^ -o $@

#没有依赖
#clean清除所有的.o中间文件
#伪目标
.PHONY:clean

clean:
    rm -f *.o
    rm -f myapp
#递归展开式
#可以引用还没有定义的变量,展开是引用时展开
str2=$(str1)
str1=hello

#直接展开式
#必须引用定义好的变量,定义之后就会展开
str3 := android
str4 := $(str3)
#拼接字符串
str5 := $(str1) world
#变量的值追加
str5 += hello
#自定义函数
myfun=$2 $1
#变量等于函数的执行结构
myfun_ret=$(call myfun,20,10)

test:
    @echo $(SOURCES)
    @echo $(OBJECTS)
    @echo $(str2)
    @echo $(str4)
    @echo $(str5)
    @echo $(myfun_ret)
    @echo $(call myfun,30,40)


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值