[开发工具] 把 Keil 工程转换为 CMake 工程
国产 IC 厂家太给力用上了最新的 Cortex-M52 内核。由于用力太猛 Keil 的支持都还不完善这个就是厂商就是极海微这颗 IC 就是G32R501关于 G32R501极海微最新推出的基于 Cortex-M52 的实时控制MCU下面是引用自官网对这个 MCU 的介绍G32R5系列实时控制MCU搭载Armv8.1-M架构的Arm®Cortex®-M52内核及自研紫电数学指令扩展单元支持基于矢量扩充方案MVE的ArmHeliumTM技术集成高性能感知控制外设和灵活的外设互联系统支持-40°C~105°/125°C的宽环境工作温度适用于新能源逆变器、商业电源、工业自动化、新能源汽车等广泛领域。问题描述因为内核过于“新鲜”keil的支持尚未跟上具体的表现可以看下图不能找到函数/变量的定义;编辑器自动补全功能不能使用主窗口状态栏显示“Module error! text completion deactivated.尝试解决容易想到的两个解决方法换个开发工具。换个内核。第一个方法是最容易想到的除了keil极海官方的资料显示最新的 IAR 对 G32R501 的支持是完善的。在极海的应用笔记《AN1126_G32R501 IDE与工具链使用说明》中也提到了 Eclispe 的使用方法。第二个方法是取巧了可以在项目 Device 下改选其他同一个指令集的内核Cortex-M55如下图所示之后清理一下项目再重新编译就可以支持符号定义跳转和自动补全功能。除了上面两个方法我自己还想到了 vs code 这个流行的工具。ARM官方还提供了 vs code 的扩展工具 Keil Studio Pack点这里直达官网~这个扩展非常依赖网络表现是构建工程时会从外网拉取资料网络不好或者不能使用网络的工作环境这个扩展就是失去了功能。为此我的思路回到了传统 C/C 开发的方法中经过了解 vs code 对于 CMake 的支持非常完善所以我决定选用这个方法把 keil 工程改为 CMake 项目。最开始的就是手写 CMakeLists.txt 可以参考这个帖子《[G32R] 使用 cmakevscode 环境移植 ThreadX 到 G32R501》https://bbs.21ic.com/icview-3460432-1-1.html 。这里吐槽一下为什么帖子里不能增加链接21小跑堂我的方案每个项目都要手工改写的话肯定不是我的风格于是我写了个小工具uvprojx2CMake 把 Keil 工程转换为 CMake 工程。这个工具是用 Python 编写功能就是解析 keil 工程文件 .uvprojx 文件并按 CMake 的要求生成 CMakeLists.txt 。工程在 Gitee 上开源了https://gitee.com/quincyzh/uvprojx2cmake希望大家前往 star~当前版本提供了命令行方式和一个不太完善的 GUI 界面。这个工具可以于 keil 结合能更加便捷的使用下面介绍集成方法第一步下载这个工程。请前往 Gitee 页面可以选择 git 克隆也可以直接下载 zip 文件。第二步如果你的电脑没有 Python 的话需要安装。第三步添加 keil 菜单项。打开keil点击菜单【Tools】→【Custom Tools Menu...】项目第四步添加菜单项参照下图击红色箭头指向虚线框按钮增加一个菜单项在蓝色箭头处输入菜单项名称我这里是uvproj2CMake在绿色框的两个输入框填入内第一行是 python 可执行程序的名称有无 .exe 都可以第二行是 keil_uvprojx_to_cmake.py 这个文件的绝对路径和程序参数-v -e #P可以复制粘贴。运行效果上述步骤完成后 keil 的 Tools 菜单会变成下图红色箭头所指的样子点击后就会出现蓝色框的输出内容显示CMake文件已生成:VS Code 设置已创建/更新的提示语表明运行成功~使用 vs code 打开这个文件夹就可以在 vs code 里构建/编译项目了配置项目点击绿色箭头成功的话输出类似绿色框的内容编译点击绿色箭头的“生成”编译的日志类似绿色框内容这样一番操作我们就可以享受 vs code 这个现代化工具带给我们的便利~~~---------------------作者wangqy_ic链接https://bbs.21ic.com/icview-3474906-1-1.html?_dsign116cb72a来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。