搜索
bottom↓
回复: 58

贡献从MDK工程生成Visual Studio 2015工程的Python脚本

  [复制链接]

出0入25汤圆

发表于 2015-8-11 15:38:31 | 显示全部楼层 |阅读模式

Visual Studio的编辑功能比MDK强很多,但专门再建立Visual Studio项目工程并添加各种文件和设置实在太麻烦,所以就编写了一个Python脚本自动从MDK项目文件生成Visual Studio 2015的项目工程
现在基本可以使用了,不过我这里只有MDK4.7和Visual Studio 2015,对其他的版本支持可能有问题,,,下面是使用方法

一、设置MDK项目,生成.BAT文件

如上设置好之后编译一下工程,会自动生成.BAT文件

二、运行脚本,生成Visual Studio项目
MDK项目结构和目录结构如下:



双击.py文件运行(需要安装Python2.7和PyQt4.11)


指定MDK工程文件路径:


点击生成按钮,生成下面4个文件:


双击.sln文件打开VIsual Studio工程:


点击编译按钮可以编译项目


脚本文件:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2015-8-11 16:01:53 | 显示全部楼层
不错,技术帖子,为什么要hex去掉,是生成不了吗

出0入25汤圆

 楼主| 发表于 2015-8-11 16:12:42 | 显示全部楼层
xianghaisha 发表于 2015-8-11 16:01
不错,技术帖子,为什么要hex去掉,是生成不了吗


因为MDK生成.BAT文件有BUG,如下图:

生成hex的那条命令缺少引号,这样执行.BAT文件时会报错,所以我就干脆把生成HEX给去掉了,,不过手动更改.BAT文件添上引号也可以

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入4汤圆

发表于 2015-8-11 16:18:46 | 显示全部楼层
楼主能不能做个MDK转VS2012的脚本啊?谢谢

出0入25汤圆

 楼主| 发表于 2015-8-11 16:50:02 | 显示全部楼层
gagmeng 发表于 2015-8-11 16:18
楼主能不能做个MDK转VS2012的脚本啊?谢谢


不好意思,我电脑上只有MDK4.7和Visual Studio 2015,没有2012

这个工具是个脚本文件,源代码直接用文本编辑器就可以查看和编辑,如果感兴趣的话可以试着自己改改。。

出0入0汤圆

发表于 2015-8-11 16:55:46 | 显示全部楼层
技术贴啊

出5入8汤圆

发表于 2015-8-11 17:00:04 | 显示全部楼层
本帖最后由 wt3333 于 2015-8-11 17:37 编辑

膜拜 高手
非常感谢

出0入0汤圆

发表于 2015-8-11 17:03:11 | 显示全部楼层
这个挺好的
有没有研究过MDK5的工程文件(尾缀.uvprojx)的格式,并也支持呢

出0入0汤圆

发表于 2015-8-11 17:04:54 | 显示全部楼层
好经验,谢谢分享。

出0入0汤圆

发表于 2015-8-17 00:13:59 | 显示全部楼层
高手,我也用的2015,有空再试试

出0入0汤圆

发表于 2016-5-27 12:46:00 | 显示全部楼层
        root = et.parse(mdkproj).getroot()
        
        self.mdkproj['TargetName'] = root.find('Targets/Target/TargetName').text
        
        defines = root.find('Targets/Target/TargetOption/TargetArmAds/Cads/VariousControls/Define').text
        self.mdkproj['Defines'] = defines.split() if defines else []
        
        incdirs = root.find('Targets/Target/TargetOption/TargetArmAds/Cads/VariousControls/IncludePath').text
        self.mdkproj['IncludePaths'] = incdirs.split() if incdirs else []
        
        self.mdkproj['Groups'] = {}
        for group in root.find('Targets/Target/Groups').iterfind('Group'):
            groupName = group.find('GroupName').text
            self.mdkproj['Groups'][groupName] = {}
            for file in group.find('Files').iterfind('File'):                        //出错!!!
                self.mdkproj['Groups'][groupName][file.find('FileName').text] = file.find('FilePath').text

运行到这里会出错。

出0入0汤圆

发表于 2016-5-27 13:40:03 | 显示全部楼层
技术贴啊,顶

出0入0汤圆

发表于 2016-8-10 17:49:14 | 显示全部楼层
ablightstar 发表于 2015-8-11 17:03
这个挺好的
有没有研究过MDK5的工程文件(尾缀.uvprojx)的格式,并也支持呢
...

如你所愿,支持.uvprojx

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-8-10 17:50:35 | 显示全部楼层
yp19820523 发表于 2016-5-27 12:46
root = et.parse(mdkproj).getroot()
        
        self.mdkproj['TargetName'] = root.find(' ...

用xml 工具产看下 ,是不是有文件名包含::

出0入0汤圆

发表于 2016-8-10 19:13:01 | 显示全部楼层
学习了,不过你也可以直接在VS中使用GDB插件开发stm32,可以直接在VS中编译调试。

出0入0汤圆

发表于 2016-8-10 20:06:18 来自手机 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2016-8-10 21:37:20 | 显示全部楼层
求助楼主,打开有点问题:
Taaceback ( most recent call last ):
File "MDK2VS2015.py", line 160, in <module>
  win = MDK2VS2015()
File "MDK2VS2015.py", line 26 in __init__
   value, type = _winreg.QueryValueEx(key, 'Rpoject %d' %i )
WindowsError: [Error 2 ]

出0入0汤圆

发表于 2016-8-10 21:38:43 | 显示全部楼层
MDK5的工程后缀不一样

出0入0汤圆

发表于 2016-8-10 22:10:30 | 显示全部楼层
eliterxzgxu 发表于 2016-8-10 21:37
求助楼主,打开有点问题:
Taaceback ( most recent call last ):
File "MDK2VS2015.py", line 160, in

确认下注册表路径是否相同

出0入12汤圆

发表于 2016-9-2 11:33:18 | 显示全部楼层
支持一下,不错。

出0入8汤圆

发表于 2017-2-3 17:32:18 | 显示全部楼层
Eworm001 发表于 2016-8-10 17:49
如你所愿,支持.uvprojx

MDK5的这个PY文件打开没UI界面,直接闪退就

出0入0汤圆

发表于 2017-2-4 14:26:14 | 显示全部楼层
谢谢分享!!

出0入30汤圆

发表于 2017-2-4 15:17:25 | 显示全部楼层
兄台这个工具很不错。不过建议打包为exe文件,不然还要安装运行环境真是太麻烦了。

出0入0汤圆

发表于 2017-2-4 16:26:51 | 显示全部楼层
感谢楼主。下载学习下python。

出0入0汤圆

发表于 2017-2-4 22:01:09 | 显示全部楼层
这个要几号一下

出0入0汤圆

发表于 2017-2-7 17:14:08 来自手机 | 显示全部楼层
不错不错

出0入0汤圆

发表于 2017-2-7 20:37:26 | 显示全部楼层
vs2015 mdk mark多谢LZ!

出0入0汤圆

发表于 2017-3-2 14:09:16 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2017-3-2 21:58:19 | 显示全部楼层
楼主是好人,鉴定完毕!

出0入0汤圆

发表于 2017-3-30 07:20:04 来自手机 | 显示全部楼层
vs2015 mdk

出0入0汤圆

发表于 2017-3-30 08:34:57 | 显示全部楼层
不错,好东西

出0入0汤圆

发表于 2017-4-5 14:30:24 | 显示全部楼层
谢谢,好东西

出0入0汤圆

发表于 2017-4-5 18:17:58 | 显示全部楼层
学习学习  多谢!

出0入0汤圆

发表于 2017-4-13 12:43:24 来自手机 | 显示全部楼层
多谢顶一下

出0入0汤圆

发表于 2017-4-23 13:52:03 | 显示全部楼层
Traceback (most recent call last):
  File "MDK2VS2015.py", line 52, in on_btnGen_clicked
    self.parse_mdkproj(mdkproj)
  File "MDK2VS2015.py", line 158, in parse_mdkproj
    for file in group.find('Files').iterfind('File'):
AttributeError: 'NoneType' object has no attribute 'iterfind'

出0入25汤圆

 楼主| 发表于 2017-4-23 14:06:09 | 显示全部楼层
相由心生 发表于 2017-4-23 13:52
Traceback (most recent call last):
  File "MDK2VS2015.py", line 52, in on_btnGen_clicked
    self.pa ...


从错误提示信息上看,是有个Group下面没有文件,即一个空的Group,把这个空Group删掉就行了,,比如:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-4-23 18:54:50 | 显示全部楼层
这种方法不错 多谢分析

出0入0汤圆

发表于 2017-4-23 19:33:14 | 显示全部楼层
今天试用了下,挺好,但编译不适合,不适用所有情况。但编辑无敌了。
对,有一个空的Group,做一个条件判断,可以支持这种情况了。
还有一个引用多一个引号的错误,一并也修复了。
1、空的Group修复
2、相用多一个引号修改
3、支持5.23 注册表中“矿”这样的乱码
见附件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入25汤圆

 楼主| 发表于 2017-4-23 21:14:27 | 显示全部楼层
相由心生 发表于 2017-4-23 19:33
今天试用了下,挺好,但编译不适合,不适用所有情况。但编辑无敌了。
对,有一个空的Group,做一个条件判断 ...


改成Python3 + PyQt5了,挺好,,

出0入25汤圆

 楼主| 发表于 2017-4-23 21:18:07 | 显示全部楼层
yp19820523 发表于 2016-5-27 12:46
root = et.parse(mdkproj).getroot()
        
        self.mdkproj['TargetName'] = root.find(' ...


35楼出错位置和你一样,,36楼给出了解决方法,你试试看是这个问题吗

出0入0汤圆

发表于 2017-4-24 13:43:41 | 显示全部楼层
直接用python 还是比较麻烦,支持楼主做成.exe文件

出0入25汤圆

 楼主| 发表于 2017-4-24 14:18:18 | 显示全部楼层
相由心生 发表于 2017-4-24 13:43
直接用python 还是比较麻烦,支持楼主做成.exe文件

打包可以用pyinstaller,除了打包后程序有点儿大,其他都还好





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-4-24 22:51:09 | 显示全部楼层
XIVN1987 发表于 2017-4-24 14:18
打包可以用pyinstaller,除了打包后程序有点儿大,其他都还好

确实不错。
下面这个是python 3.6 生成的
可以兼容:
1、MDK中有空目录的
2、mdk5有"矿"样的
解决了:
1、多了一个引号引起include 出错问题的
多谢楼主授之于渔。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-7-13 15:09:45 | 显示全部楼层
本帖最后由 vjcmain 于 2017-7-13 15:17 编辑
相由心生 发表于 2017-4-24 22:51
确实不错。
下面这个是python 3.6 生成的
可以兼容:


BAO

使用了报错。

然后添加了qt.conf  Template 文件夹就OK了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2017-7-14 00:10:18 | 显示全部楼层
vjcmain 发表于 2017-7-13 15:09
BAO

使用了报错。

对。忘了打包进去。

出0入0汤圆

发表于 2017-8-2 10:25:44 | 显示全部楼层
请教楼主,这个脚本是不是就是读了那个批处理文件,然后添加到VS的?

出0入0汤圆

发表于 2017-8-2 10:32:13 | 显示全部楼层
这个只能在VS中编辑还是同时支持编译和调试?

出0入25汤圆

 楼主| 发表于 2017-8-2 10:45:38 | 显示全部楼层
wofei3344 发表于 2017-8-2 10:32
这个只能在VS中编辑还是同时支持编译和调试?


Keil的工程文件.uvproj和VS的工程文件.vcxproj都是文本文件,,而且都是XML格式的
python的作用就是解析出.uvproj文件中的信息,然后把信息相应填到.vcxproj文件中,,然后就能用VS打开工程了

批处理文件是用来编译的命令
生成的VS工程主要是编辑用,,也可以调用批处理编译程序,,但调试还是要使用Keil MDK

出0入0汤圆

发表于 2017-8-2 10:48:38 | 显示全部楼层
XIVN1987 发表于 2017-8-2 10:45
Keil的工程文件.uvproj和VS的工程文件.vcxproj都是文本文件,,而且都是XML格式的
python的作用就是解析 ...

多谢楼主细心回复,楼主会C#吗?能做成C#的也许就能看明白了,脚本不懂...

出0入0汤圆

发表于 2017-8-2 11:18:43 | 显示全部楼层
VS2017好像不支持?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-4-8 20:22:43 | 显示全部楼层
回去仔细研究大神 的神器

出0入0汤圆

发表于 2019-4-8 20:34:17 | 显示全部楼层
samxidz 发表于 2017-8-2 11:18
VS2017好像不支持?

https://github.com/armku/MDK2VC
可以支持转到VS2017

出0入4汤圆

发表于 2019-4-8 22:28:18 | 显示全部楼层
这个不错,VS编辑起来方便些

出0入0汤圆

发表于 2019-11-19 15:35:12 | 显示全部楼层
armku 发表于 2019-4-8 20:34
https://github.com/armku/MDK2VC
可以支持转到VS2017

打不开呢?有没有详细的说明?

出0入0汤圆

发表于 2019-11-19 18:56:12 | 显示全部楼层
HappySmile 发表于 2019-11-19 15:35
打不开呢?有没有详细的说明?

打开用VS2019编译,晚点我发布个直接使用版本;现在新版支持生成VS2017、VS2019工程。

出0入0汤圆

发表于 2019-11-19 19:07:46 | 显示全部楼层
HappySmile 发表于 2019-11-19 15:35
打不开呢?有没有详细的说明?


发布完成
Release上有个exe文件直接放在任意文件夹下运行就可以

出0入0汤圆

发表于 2019-12-2 08:51:29 | 显示全部楼层
本帖最后由 HappySmile 于 2019-12-2 10:02 编辑
armku 发表于 2019-11-19 19:07
发布完成
Release上有个exe文件直接放在任意文件夹下运行就可以


还有个小问题,没用过C#,但是我想在附加包含目录中增加一条固定的头文件路径,需要在哪个文件改动一下?

PS:上面的问题解决了,我又有个新的问题。
我想在工程属性的调试界面的“命令”“命令参数”“工作界面”分别增加字符串,请问现在的基础能做到吗?

出0入0汤圆

发表于 2019-12-2 20:29:05 | 显示全部楼层
HappySmile 发表于 2019-12-2 08:51
还有个小问题,没用过C#,但是我想在附加包含目录中增加一条固定的头文件路径,需要在哪个文件改动一下?
...

不熟悉VS如何加这些内容,周末去图书馆查查资料

出0入0汤圆

发表于 2019-12-6 16:41:04 | 显示全部楼层
armku 发表于 2019-12-2 20:29
不熟悉VS如何加这些内容,周末去图书馆查查资料

大神,还有个小小的问题,能不能把生成的VS工程的路径设置为可选择的路径?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-24 11:29

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表