当前位置:网站首页>RT-Thread 学习笔记(三)---用SCons 构建编译环境
RT-Thread 学习笔记(三)---用SCons 构建编译环境
2022-07-26 10:38:00 【aping_cs_dn】
软件环境:Win7,Keil MDK 4.72a, IAR EWARM 7.2, GCC 4.2,Python 2.7 ,SCons 2.3.2
硬件环境:Armfly STM32F103ZE-EK v3.0开发板
参考文章
【1】RT-Thread 用户手册
1 关于SCons构建工具
手册第10章是这样描述的:SCons是一套由Python语言编写的开源构建系统,类似于GNU Make。它采用不同于通常Makefile文件的SConstruct和SConscript文件。这些文件也是Python脚本,能够使用标准的Python语法来编写。所以在SConstruct、SConscript文件中可以调用Python标准库进行各类复杂的处理,而不局限于Makefile设定的规则。在SCons的网站上可以找到详细的SCons用户手册。
2 下载并安装NotePad++文本编辑工具
- 内置支持多达27种语法高亮度显示(包括各种常见的源代码、脚本,能够很好地支持 .nfo 文件查看),还支持自定义语言;
- 可自动检测文件类型,根据关键字显示节点,节点可自由折叠/打开,还可显示缩进引导线,代码显示得很有层次感;
- 可打开双窗口,在分窗口中又可打开多个子窗口,显示比例;
- 提供了一些有用工具,如 邻行互换位置、宏功能,等……
- 可显示选中的文本的字节数 (而不是一般编辑器所显示的字数,这在某些情况下,比如软件本地化很方便);
- 正则匹配字符串及批量替换;
- 强大的插件机制,扩展了编辑能力,如Zen Coding。
3 建立RT-Thread/bsp下的应用分支

ARCH='arm'
CPU='cortex-m3'
CROSS_TOOL=' Keil'
CROSS_TOOL = os.getenv('RTT_CC')
# STM32_TYPE =
# 'STM32F10X_LD','STM32F10X_LD_VL',
# 'STM32F10X_MD','STM32F10X_MD_VL',
# 'STM32F10X_HD','STM32F10X_HD_VL',
# 'STM32F10X_XL','STM32F10X_CL'
STM32_TYPE = 'STM32F10X_HD'
# 'FMT0371','ILI932X', 'SSD1289'
RT_USING_LCD_TYPE = 'SSD1289'
# EXEC_PATH is the compiler execute path, for example, CodeSourcery, Keil MDK, IAR
PLATFORM = 'gcc'
EXEC_PATH = r'C:\Program Files\CodeSourcery\Sourcery_CodeBench_Lite_for_ARM_EABI\bin'
elif CROSS_TOOL == 'keil':
PLATFORM = 'armcc'
EXEC_PATH = 'C:/Keil'
elif CROSS_TOOL == 'iar':
PLATFORM = 'iar'
IAR_PATH = r'C:\Program Files\IAR Systems\Embedded Workbench 7.0'
EXEC_PATH = os.getenv('RTT_EXEC_PATH')
【3】保存并编译
编译技巧提示:每次打开命令终端输入命令进入到工作目录下对于打字比较慢的人来说比较费时的事,新建一个批处理文件可以节省点时间,将下面内容复制到一个记事本里然后重命名成一个xxx.bat文件就可以了。
echo RTT bat
E:
cd \RTT\apingrtt\rt-thread-1.2.2\bsp\stm32f103ze-ek
::pause
cmd.exe
然后就可以编译了。
出现错误,如下图:

再打开keil MDK的options,如下图。

对照下系统变量,发现系统变量列表中没有RT_CC,所以rtconfig.py中的判断条件为假,而RT_ROOT=E:\RT_Thread需要修改下,因为这里RTT_ROOT的变量值为RTT源码根目录,这个变量在顶级SConstruct文件中用到,修改结果如下图。

然后在运行scons --target=mdk4 -s,如下图。

再次用keil去打开此目录下的工程文件,然后打开options,看看,如下图。

根目录已经起作用了。
在命令终端进入到stim32f103zet_v5(baiwei)目录下,运行scons -c,清除之前的编译结果。然后运行scons 重新编译,结果如下:

【4】经编译输出目录设置为不收版本监控。
Git 中的文件忽略
1. 共享式忽略新建 .gitignore 文件,放在工程目录任意位置即可。.gitignore 文件可以忽略自己。忽略的文件,只针对未跟踪文件有效,对已加入版本库的文件无效。
2. 独享式忽略针对具体版本库 :.git/info/exclude针对本地全局: git config --global core.excludefile ~/.gitignore
忽略的语法规则:
"#"表示注释;
以斜杠“/”开头表示目录;
以星号“*”通配多个字符,即"*" 表示任意多个字符;
以问号“?”通配单个字符,即"?" 代表一个字符;
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
([abc]) 代表可选字符范围
此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
如果名称最前面是路径分隔符“/”,表示忽略的该文件在此目录下。
如果名称的最后面是 “/” ,表示忽略整个目录,但同名文件不忽略。
通过在名称前面加 “!”,代表不忽略。
例子如下:
# 这行是注释
*.a # 忽略所有 .a 伟扩展名的文件
!lib.a # 但是 lib.a 不忽略,即使之前设置了忽略所有的 .a
/TODO # 只忽略此目录下 TODO 文件,子目录的 TODO 不忽略
build/ # 忽略所有的 build/ 目录下文件,注意,不管是根目录下的 /build/ 目录,还是某个子目录 /child/build/ 目录,都会被忽略;
doc/*.txt # 忽略如 doc/notes.txt, 但是不忽略如 doc/server/arch.txt


边栏推荐
- 链式方法调用的事务问题剖析
- Okaleido ecological core equity Oka, all in fusion mining mode
- [leetcode每日一题2021/2/14]765. 情侣牵手
- 【论文下饭】Deep Mining External Imperfect Data for ChestX-ray Disease Screening
- SuperMap IClient for Leaflet 加载高斯克吕格投影三度分带CGCS2000大地坐标系WMTS服务
- 头歌 Phoenix 入门(第1关:Phoenix 安装、第2关:Phoenix 基础语法)
- 反射机制简述
- 【机器学习小记】【搭建循环神经网络及其应用】deeplearning.ai course5 1st week programming(keras)
- algorithm
- 2022/07/25 ------ arrangement of strings
猜你喜欢

Zongzi battle - guess who can win
![[leetcode每日一题2021/5/8]1723. 完成所有工作的最短时间](/img/e7/a48bb5b8a86cbc4cd5b37bb16661a8.png)
[leetcode每日一题2021/5/8]1723. 完成所有工作的最短时间

Issue 8: cloud native -- how should college students learn in the workplace
![[Halcon vision] threshold segmentation](/img/1c/e2463a796f99804a55680b69e714a6.png)
[Halcon vision] threshold segmentation

第7期:内卷和躺平,你怎么选

一文详解Nodejs中fs文件模块与path路径模块

Centos8 (liunx) deploying WTM (asp.net 5) using PgSQL

oracle 启动不了 tnslistener服务启动不了

Navicat15连接本地虚拟机的Mysql(Centos7)

Application of.Net open source framework in industrial production
随机推荐
MD5 encryption
Perfect / buffer motion framework in sentence parsing JS (for beginners)
vscode上使用anaconda(已经配置好环境)
C语言计算日期间隔天数
20210807#1 C语言程序结构
.net operation redis sorted set ordered set
Okaleido ecological core equity Oka, all in fusion mining mode
hx711 数据波动大的问题
C语言回调函数
Application of.Net open source framework in industrial production
Inheritance method of simplified constructor (II) - class inheritance in ES6
剑指Offer(四十三):左旋转字符串
第7期:内卷和躺平,你怎么选
使用Geoprocessor 工具
.NET操作Redis Hash对象
(转载)ArcGIS Engine中各种点的创建方法
13 以对象管理资源
Problems encountered in QRcode QR code (C language)
What if MySQL can't get in
干货likeshop外卖点餐系统开源啦100%开源无加密