精准提取MDK工程和SES Segger embeded studio工程的源文件和头文件GUI工具

MDK-SES提取SI文件列表

下载链接

下载链接

简介

参考链接

有些工程,可能包含了一大堆文件(比如 rt-thread 工程),你可能并不需要它们,但是却一直保留在你的工程目录中,想删掉又怕删错,一个个整理又太麻烦。

还有就是,当你使用 SI(source insight) 看源代码时,因为你不知道哪些文件才是你当前文件需要的,所以只能一股脑把所有的源文件添加到工程里面了。

然后你会发现,一个 main 函数有多处定义了,你都不知道哪个文件的 main 函数才是正主(在看 linux 源代码时亦是如此,根本不知道哪些文件被编译进内核了)。并且 SI 同步时间也大大延长了,本来几秒钟就能完成同步的,可能就需要十几秒,几十秒。

GUI 实现

  • 可以精准获取MDK工程编译后的所有源文件
  • 可以精准获取SES(segger embeded studio)工程编译后的所有源文件

image-20211104100416409

使用方法

  1. 确认当前工程是MDK工程还是SES工程

  2. 选择工程编译后的*.d文件的路径

  3. 执行保存提取到的文件列表路径(指定文件名功能不需要关心)

  4. 点击提交后,会在指定的路径下,自动生成source insight文件列表

  5. 创建source insight工程,导入上面的文件列表

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eMSXKYHf-1635995626670)(https://gitee.com/chenyingchun0312/article-images/raw/master/Typora02/202111041111409.gif)]

    image-20211104100845417

实现原理

精准提取MDK工程中的所有源文件和头文件

  • 在编译后的文件目录中(存在*.d)打开git bash
  • 输入命令cat *.d | awk -F ' ' '{print $2}' | awk '!a[$0]++' > sourceinsight_files.txt
    • cat *.d 表示获取所有的*.d文件内容
    • awk -F ' ' '{print $2}' 表示获取.d文件中的以空格为分割的第二列
    • awk '!a[$0]++' 表示将结果中,向同行去重
  • 在MDK工程所在目录创建SI工程,然后导入sourceinsight_files.txt

精准提取SES工程中的而所有源文件和头文件

将如下脚本放到test.sh文件中,并将test.sh放到.d文件所在目录,然后执行source test.sh, 最后会生成Sourceinsight.txt文件,即为si创建工程时所需要添加的文件

cat *.d | grep -v "Output" > cat_all_d.txt    # 打开所有*.d文件,排除Output一行(这行是.0文件)
sed -i 's/^[ \t]*//g' cat_all_d.txt           # 删除行首空格
sed -i  's/ \\//g' cat_all_d.txt              # 替换所有的'空格+\n'为空
sed -i 's/.h /.h \n/g' cat_all_d.txt          # 替换所有的'.h空格' 为 '.h空格+换行'
cat cat_all_d.txt | awk '!a[$0]++' > Sourceinsight.txt  # 将cat_all_d.txt中所有的重复行去除

参考文件:https://blog.csdn.net/DP29syM41zyGndVF/article/details/118740542

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值