Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Env
SCons
rt-thread 工具讲解系列(三) 之 env scons 命令初探
发布于 2021-09-10 15:01:33 浏览:4083
订阅该版
[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)
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
出出啊
恃人不如自恃,人之为己者不如己之自为也
文章
43
回答
1517
被采纳
342
关注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
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
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
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
6
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部