Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Env
SCons
rt-thread 工具讲解系列(三) 之 env scons 命令初探
发布于 2021-09-10 15:01:33 浏览:1861
订阅该版
[tocm] ## 前言 工欲善其事必先利其器。我们每天用的工具,你知道他有多厉害吗? 有时候我们苦恼,scons 生成的项目工程配置文件,里面自带的默认配置不合适,每次执行 "scons --target=xxx" 之后还得特意修改一下,忘记修改一次至少 rebuild 两次。能不能让生成的配置就是我们想要的呢?下面我们尝试解密它。 ### 命令追踪 #### env 运行的是 "env/tools/scripts/env.py" 这个 python 脚本 #### menuconfig 运行的是 "env/tools/scripts/env.py menuconfig" 进而执行的 "env/tools/scripts/cmds/cmd_menuconfig.py" cmd 函数。 #### pkgs 运行的是 "env/tools/scripts/env.py pkgs" 进而执行的 "env/tools/scripts/cmds/cmd_package/__init__.py" run_env_cmd 函数。 pkgs 的命令行选项 update list 等等,分别对应 cmd_package_update.py cmd_package_list.py 等文件实现。 #### scons scons 是一个基于 py 脚本实现的通用开发环境,类似 make。它的实现比较复杂。 但是最终,它执行的 bsp 下的 "SConstruct" 这个 py 脚本文件。 通过执行 "scons -h" 命令,我们可以查看 scons 命令的帮助信息。其中,"SCons Options:" 部分是 scons 默认自带的选项;"Local Options:" 是 rt-thread 添加的。"Local Options:" 部分的实现请移步到 rt-thread 仓库下 "tools/building.py" 文件内的 "PrepareBuilding" 函数。 下面我们详细看看 "scons --target=xxx",因为它是我们今天的关注点。 #### scons targets "PrepareBuilding" 函数里使用一个字典 tgt_dict 定义了 IDE、交叉编译链工具、编译器的对应关系。 "GenTargetProject" 函数根据 "target" 选项参数选择调用哪个版本 IDE 的生成项目文件的入口函数。 以 "mdk5" 为例,调用的同目录下 "keil.py" 文件 "MDK5Project" "MDK45Project" 函数。 "SConstruct" 文件负责配置, "keil.py" 文件负责生成文件。 其它的 iar vs 都可以找到对应的 py 文件。 注:对于 MDK 项目都有个 template 文件,在 bsp 目录下。 ### 修改 MDK5 工程文件 首先,用 notpad++ 或者其它文本编辑器打开 "keil.py" 文件,"MDK4AddGroup" 函数里的 for 循环中有一句 ``` files = SubElement(group, 'Files') file = SubElement(files, 'File') ``` 将第一句挪到 for 语句前边,同时修改变量名字为 files_x。 ``` files_x = SubElement(group, 'Files') for f in files: ... file = SubElement(files_x, 'File') ``` 这个修改虽然没多少影响,但是 xml 结点结构和 keil 编辑过的不一样。 然后, 1. 启用 "Use MicroLIB"。编辑 "template.uvprojx" 文件,修改其中的 ``` "
0
" 为 "
1
" ``` 2. 启用 "Browse Information"。编辑 "template.uvprojx" 文件,修改其中的 ``` "
0
" 为 "
1
" ``` 3. 启用 "GNU extensions"。编辑 "template.uvprojx" 文件,修改其中的 ``` "
0
" 为 "
1
"。 ``` 我对这三个感兴趣,所以只修改了这三个,其它的,如果需要自行修改。 ## 结语 有些脚本还不完善,比如生成 vscode 配置的脚本。这个超级编辑器当 IDE 还有很多路要走。 也有不需要工程模版文件的,需要到 py 脚本里直接修改 py 代码。 相关文章: [rt-thread 工具讲解系列(一) 之 CmBacktrace](https://club.rt-thread.org/ask/article/3019.html) [rt-thread 工具讲解系列(二) 之 如何排查系统 bug](https://club.rt-thread.org/ask/article/3027.html) [rt-thread 工具讲解系列(三) 之 env scons 命令初探](https://club.rt-thread.org/ask/article/3036.html)
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
出出啊
致男人们:劝说是不会有成果的。 —— 《单向街》
文章
41
回答
1463
被采纳
324
关注TA
发私信
相关文章
1
scons不支持python3吗?
2
编译又出现问题
3
BSP目录下做好一个项目后,怎么把发给别人的包裁剪的小...
4
为什么重新scons --target=mdk 后,以前在MDK工程里保存的C文
5
Scons 添加Group,SConscript已经执行,源码却没有添加进工程
6
scons如何指定输出目录?
7
新人求助。
8
想用env 工具自己构建编译环境想用vscode 进行一些简单程序
9
关于scons脚本问题
10
使用scons --target=makefile的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
AT
SPI
Bootloader
FinSH
ART-Pi
CAN总线
Hardfault
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
stm32
ESP8266
rt-smart
WIZnet_W5500
RTC
flash
ota
UART
FAL
packages_软件包
I2C
freemodbus
cubemx
潘多拉开发板_Pandora
定时器
PWM
BSP
ADC
socket
AB32VG1
SDIO
keil_MDK
中断
消息队列_msg_queue
编译报错
Debug
C++_cpp
msh
QEMU
SFUD
MicroPython
本月问答贡献
出出啊
1463
个答案
324
次被采纳
小小李sunny
1379
个答案
274
次被采纳
张世争
700
个答案
155
次被采纳
crystal266
518
个答案
152
次被采纳
whj467467222
1215
个答案
146
次被采纳
本月文章贡献
出出啊
1
篇文章
11
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
4
篇文章
6
次点赞
crystal266
2
篇文章
5
次点赞
whj467467222
2
篇文章
4
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部