RT-Thread 学习笔记(三)---用SCons 构建编译环境
来源:互联网 发布:淘宝旺旺链接生成器 编辑:程序博客网 时间:2024/06/06 09:35
软件环境: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
- RT-Thread 学习笔记(三)---用SCons 构建编译环境
- RT-Thread 学习笔记(四)---用Eclipse构建编译环境
- Scons构建RT-Thread开发环境
- RT-Thread 学习笔记(一)---配置RT-Thread开发环境
- rt-thread学习笔记(一)-开发环境
- STM32 + RT Thread OS 学习笔记[三]
- RT-Thread学习之scons篇--SConsruct脚本文件解析
- 熟悉RT-Thread的软硬件环境【RT-Thread学习笔记 1】
- 【RT-Thread学习笔记 1】熟悉RT-Thread的软硬件环境
- rt-thread学习笔记开篇
- RT-Thread 学习笔记(十二)--- 开启基于RTGUI的LCD显示功能(2)<编译测试>
- RT-Thread 学习笔记(三)——读取MCU ID及FLASH大小
- RT-Thread的线程(任务)处理【RT-Thread学习笔记 2】
- 【RT-Thread学习笔记 2】RT-Thread的线程(任务)处理
- RT-Thread之python和scons
- RTTHREAD scons构建环境
- RT-Thread 学习笔记(五)---编辑、下载、调试程序
- RT-Thread 学习笔记(一)---系统节拍tick
- Java 欧拉工程 第二十二篇【 名字得分总和】
- 1591 M*A*S*H
- leader/follower 中工作线程竞争解决方法
- 开源协议的对比
- 在一个aspx或ashx页面里进行多次ajax调用
- RT-Thread 学习笔记(三)---用SCons 构建编译环境
- swift 学习资料
- tomcat 中配置 dbcp pool 连接池技术的使用 及 说明
- Java中求字符串长度length()和codePointCount()的区别
- 算法:C语言实现第三章第一节学习笔记
- Hdu 2579 Dating with girls(2) && hdu 2653 Waiting ten thousand years for Love【Bfs】
- hdu4973 A simple simulation problem.(多校第十场1003)
- 过滤器与拦截器的区别
- pig读取部分列 (全部列中的少部分列)