起因
在使用env进行构建工程的时候,如果是从MDK手动添加分组和源码,重新构建以后工程又恢复原来的样子了,极为不方便,因此就去RT-Thread的官网查找这方面的资料,果然找到了相关的教程,教程的连接如下:Scons。但是教程的篇幅较长,如果只是希望在工程中添加一些分组和源码,其实只需要简单的几步即可完成,因此本文作为一个使用笔记,能够让读者在不熟悉Scons的基础上快速将组和源码添加进入工程。如果读者需要理解Scons,可以看上面提到的链接,作为入门理解非常有帮助。
需求
根据上述的问题,本文的目标就是在使用scons创建工程的时候,将代码和分组自动添加进我们的工程里面,而不需要每次都手动去添加。
实现
1、bsp目录下新建reader,并将reader所属的源码放到该文件夹下。stm32f407-vup是我的开发板,reader文件夹里面的内容如下:
2、在reader文件夹下新建SConscript文件
3、SConscript文件内容如下,后面有相关的注释,可以看着理解
from building import * # 把 building 模块的所有内容全都导入到当前模块,后面用到的 DefineGroup 定义在这个模块
cwd = GetCurrentDir() # 获取当前路径(绝对路径),并保存到 cwd 变量中
include_path = [cwd] # 将 cwd 变量添加进 include_path 列表中
src = [] # 新建一个 src 列表,里面的内容为空
src += ['host_if.c'] # 将 host_if.c 文件添加到 src 列表中
group = DefineGroup('reader', src, depend = [''], CPPPATH = include_path) # 新建一个组,reader 表示组的名称,src 表示组的源文件,depend = ['']表示这个组的依赖为空,CPPPATH = include_path表示这个组的头文件路径
Return('group')
4、通过上面这个SConcript文件,就新建了一个组reader,并且将reader所在的路径添加到了mdk的头文件搜索路径里面,我们使用scons --target=mdk5试试。
5、打开工程试试,果然reader组已经自动创建了。
6、再看看头文件路径,也是自动添加进来了的。
7、假设我们还需要添加一个文件,test.c,怎么做呢?只需修改reader文件夹下的SConscript文件,将test.c添加进来即可。
8、然后scons --target=mdk5,再打开工程查看,果然已经添加成功啦。