默认的官方SDK(如:ESP8266_NONOS_SDK_1.5.4),需要将开发的应用代码目录放到SDK的根目录下才能进行编译,你想把自己的应用工程放在其它位置,就编译不了,很不方便,原因就是在里面的编译脚本和makefile中,很多地方的路径变量都是写死的,我花了点时间研究了一下它默认的编译脚本和相关文件,经过修改,可以达到自己的工程独立于SDK路径,具体做法如下:
1,自己的工程目录里编译启动脚本有gen_misc.sh(我这里以Linux编译环境为例),在开始位置增加以下几个变量设置:
#取当前路径
CUR_PATH=$(pwd)
#设置工程目录
export PROJ_PATH=${CUR_PATH}
#设置SDK的根目录,这里根据自己的情况修改,注意最后面的那个/不要忘了
export SDK_ROOT=/home/winkinwang/work_space/share_dir/iot/ESP8266_NONOS_SDK_1.5.4/
#这里是创建编译后的固件bin文件存放目录,我这里是编译可升级的,所以需要这个目录
mkdir -p ${CUR_PATH}/bin/upgrade
2,修改工程中的Makefile文件(Makefile):
找到LDDIR =../ld一行,修改为:LDDIR = ${SDK_ROOT}/ld
找到-L../lib 修改为:-L${SDK_ROOT}/lib
找到PDIR := ../$(PDIR),修改为:PDIR := ${SDK_ROOT}
3,修改SDK中的Makefile文件(ESP8266_NONOS_SDK_1.5.4/Makefile):
找到@python ../tools/gen_appbin.py 几行,修改为:@python $(SDK_ROOT)/tools/gen_appbin.py
找到../bin/upgrade/$(BIN_NAME).bin 修改为:$(PROJ_PATH)/bin/upgrade/$(BIN_NAME).bin
找到PDIR := ../$(PDIR),修改为:PDIR := ${SDK_ROOT}