makefile修改

http://blog.csdn.net/ydogg/article/details/72598829

https://www.cnblogs.com/L-liwen/p/5093197.html

http://blog.csdn.net/douzhao1982/article/details/77591480---对应应该是nonosdk那个app的修改方式

https://www.jianshu.com/p/1cfe30b321cb

 

http://blog.csdn.net/zhipun/article/details/54427303//详尽

 

项目结构.jpg

  • app为项目源码文件夹,可以在里面编写自己的程序;
  • bin为烧录文件文件夹,程序编译后自动生成的bin文件会在这里,导入烧录软件即可进行烧录;
  • documents为说明文档文件夹,关于这个sdk的使用方法和介绍文档都在里面;
  • driver_lib为驱动链接库,关于串口和IO口的驱动程序的头文件和源文件都在里面,编译时后自动生成一个静态链接库;
  • examples为示例代码文件夹,可以从里面摘取代码进行模仿和学习;
  • include为头文件文件夹,当你编程时需要用到的封装函数须在这里引入对应的头文件;
  • ld为flash编译控制文件夹,里面对应你的不同flash容量给了不同的地址信息,在烧录时会调用;
  • lib为静态链接库文件夹,里面包含了各种头文件的静态链接库,编译时会调用;
  • tools为脚本与工具,一般不用修改;
  • license为许可文件,不用修改;
  • makefile为配置文件,定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,也是自动化编译过程的核心。

关于makefile

一般makefile的关注点有以下几个:

编译模式控制(针对根目录makefile)

image.png

这是在linux系统下编译控制的选择项,不过在IDE下只需修改makefile文件就可以如愿地控制编译,如果不使用ota升级功能的话那么就用上图给的编译方式就行了。

包含头文件(所有makefile)

image.png

这是makefile编译时会包含的头文件,用户可以根据自己存放头文件的位置自行对includes 后的内容进行修改。

SUBDIRS(针对app文件夹下的makefile)

image.png

变量 SUBDIRS : 指定当前目录下,要递归编译的子目录。用户需根据自己app文件夹下的子目录名称和个数,分别添加到SUBDIRS变量中,例如你的app目录如下图所示,那么对应的makefile就与上图一致。

image.png

COMPONENTS_eagle.app.v6(针对app文件夹下的makefile)

image.png

该变量是表明将引用那些app文件夹下的静态链接库,一般是与用户自己编写的文件夹名称相对应,所以用户根据需要自行修改,否则会出现函数未定义的错误。

LINKFLAGS_eagle.app.v6(针对app文件夹下的makefile)

image.png

该变量是表明将引用那些lib文件夹下的静态链接库,与lib文件夹下的文件名称相对应,所以用户根据需要自行调用修改,否则也会出现函数未定义的错误。

总之,makefile是一个很重要的文件,管理依赖和控制编译的整个过程。如果感兴趣的话,可以去学习它的语法,简直就是 自动化编译的神器 ~

posted @ 2018-03-21 17:09  XZHDJH  阅读(670)  评论(0)    收藏  举报