2、makefile中的变量
1、自定义变量:直接使用=号定义赋值,使用$取值
2、自动变量
makefile中系统自己维护的变量,通常是大写,可直接使用=号修改它的值,如下:
CC = cc
CPPFLAGS = i
3、变量的赋值:
= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值
了解完这些之后,可将makefile中不变的字符串用变量替换,当然还需要记住下面两点:
1、变量的三种用法只能在命令中使用:
2、在规则的目标定义和依赖条件中可使用%做通配符
#makefile v3
#obj target
obj=main.o add.o div.o mul.o sub.o
target=app
#self maintaining var: CC CPPFLAGS
CC = gcc
CPPFLAGS = -I
( t a r g e t ) : (target): (target):(obj)
$(CC) $(obj) -o $(target)
%.o:%.c
$(CC) -c $< -o $@
clean:
rm $(obj) $(target)
3、函数的使用
搜索函数 —— wildcard ./ .c
匹配替换函数 —— patsubst ./%.c ./%.o src
伪目标 —— .PHONY
Makefile中所有的函数都是有返回的,上面是几个常见的函数,这样我们的makefile也写的比较规范了。
#makefile v4
#obj target
#obj=main.o add.o div.o mul.o sub.o
target=app
src=$(wildcard ./*.c)
obj=$(patsubst ./%.c, ./%.o, $(src))
#self maintaining var: CC CPPFLAGS
CC = gcc
CPPFLAGS = -I
( t a r g e t ) : (target): (target):(obj)
$(CC) $(obj) -o $(target)
%.o:%.c
$(CC) -c $< -o $@
#phony target
.PHONY:clean
clean:
-echo “hello”
rm $(obj) $(target) -f
#auto var
#$<: first depend at the rule
#$@: target at the rule
#$^: all depends at the rule
#just used at the rule command
4、esp8266中makefile的学习
esp8266工程代码中使用了一套python和xtensa编译工具配合makefile完成项目的管理,还是挺复杂的,找了网上的资料大概了解了一番,表示很复杂,大概熟悉了makefile的层级结构、如何添加新的源文件目录和更改编译下载的参数对应的修改makefile,先收藏着后续如果用到可做参考。
收藏:
ESP8266_NONOS_SDK开发包生成的镜像文件构建步骤分析
Makefile学习之ESP8266官方工程的Makefile
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!