2018-10-09 既然绕不开,那么久啃倒它----makefile 从0起步

       对于eclipse 这类编译器 build project 的时候makefile 文件写明了编译的全过程。我一直抱着凑合改改能用即可态度,实际上反而花费了更多的时间 。今天开始一句一句的分析8266的RTOS工程里的makefile 文件,本着笨人笨办法的态度一句一句读。

     首先eclipse 在工程RTOS30执行 build project 实际等同于在RTOS30目录层执行 make , 命令行输入make 试试,提示如下:

因为这目录里没makefile,make 寻找“GNUmakefile”,“makefile”,“Makefile”这几个文件,谁先找到就听谁的开始干活。 和以前的2.0的版本不一样3.0的makefile 采用单独工程单独设置了。那么

进入自己的项目wifi里发现了makefile,内容如下:#开始的为注释内容,暂时不管。

只有2句话 :1,给 PROJECT_NAME赋值,以后用到$PROJECT_NAME都替换成 simple_wifi 了。

                    2. 把  IDF_PATH(上一篇我们在esp32_toolchain.sh这个批处理文件里定义了IDF_PATH 与PATH  D:\msys32\home\andluman\esp\RTOS30)/make/project.mk 引用过来。现在去看看里面都是什么内容呢?

巨大一堆。

不管3721先敲下 make 试试

干活了。

那么我们接下来看看他是怎么一条一条运行的。线索肯定在project.mk的一大堆堆里面。

读project.mk文件前我们简单了解一下   A.注释为#开头,B,@echo 表示打印提示信息给你看看(里面很多坑,比如必须以tab键开头). C:.mk 文件的最基本构成是    target ... : prerequisites .

                                 command1

                                command2

                                command3

                                ...

进入正文:

####注释一堆,看得懂得应该看看。

具体执行的第一句:

.PHONY: build-components menuconfig defconfig all build clean all_binaries check-submodules size size-components size-files size-symbols list-components  这句 .PHONY 标识 表示:如果他后面那一堆名称不小心与你的文件夹重名 他不犯傻抛弃上面的命令导致编译出错。还有另外个作用暂时不用管。

MAKECMDGOALS ?= all 缺省的make 参数为 执行 target all 你也可以改成 =clean 试试坑自己一把

all: all_binaries   你敲了make 或者make all 那么他就进来找这个all target;这玩意就像门铃没人按他他是不会执行的。你按了以后门开了,all_binaries 出来了,至于他是一个啥我们去找找看。

all_binaries: $(APP_BIN) 又是一扇门,门后面是 $(APP_BIN)  ,$的意思是取括号里的值,值有可能是1个数,有可能是一堆数,数组,字符,目录,等等许多可能;我们把他取出来再决定干什么;看看APP_BIN在哪定义的替换进来。

378行:APP_BIN:=$(APP_ELF:.elf=.bin)


又要烂尾吗。慢慢再填坑。

你可能感兴趣的:(2018-10-09 既然绕不开,那么久啃倒它----makefile 从0起步)