一个自制的Keil2Cmake转换器小工具
前言
自制了一个将根据uvprojx文件将keil工程转换到CMake工程的小工具,这样就可以用VSCode取代Keil uVision了(这构式IDE经常卡得要死)。项目仓库见Keil2Cmake。
絮语
这个项目又是拿AI跑出来的()越写越感觉AI写代码真挺爽的不知道之前在坚持什么()
README如下:
Keil2Cmake Converter
2025 年 9 月 21 日:已使用 Pyinstaller 生成了适用于 Windows 和 Linux 的可执行文件。请通过 GitHub release 下载使用。现在你的电脑上不再需要安装 Python 环境了。
环境要求
Python3- Cmake
- Ninja
- Keil 编译器
首次使用前
2025 年 9 月 21 日:现在你不再需要在代码中填写路径了。但首次使用 keil2cmake 时,你仍需在命令行中配置路径。请参考 配置工具链路径。
在第一次使用之前,请转到 第 202 行 并填写你 PC
上 自己的 Keil 安装路径。
如果你不知道如何找到它,请打开 Keil 并打开 Windows
任务管理器,在其中右键单击 Keil
任务,打开文件所在位置,然后将该路径复制到 Convert.py 的 202
行 即可。
配置工具链路径
工具链路径应存储在 ~/.keil2cmake/path.cfg
文件中。使用以下命令来查看或编辑路径:
1 | keil2cmake --show-config |
使用方法
0. 通过 Keil 生成分散加载文件(scatter file)
2025 年 8 月 3 日:我增加了一个新功能来为你生成分散加载文件,所以在大多数情况下你不再需要手动执行此步骤。该功能对绝大多数 STM32 MCU 都应有效。如果它在你的项目中不起作用,请按照以下步骤使用你自己的分散加载文件替换它。
打开你想要转换的 Keil 项目,确保它至少已经被编译过一次。
打开 ‘Options for Target’ (目标选项),切换到 ‘Linker’ (链接器) 标签页,取消勾选 ‘Use Memory Layout from Target Dialog’ (使用目标对话框中的内存布局),然后点击下方的 ‘Edit’ (编辑) 按钮,Keil 将自动为你生成一个
Template.sct文件。关闭 Keil,然后进行下一步。
0.5 (可选) 将 keil2cmake 添加到你的 Path 环境变量
这样做可以让你不必输入完整的(可能很长的)路径。
关于如何将 keil2cmake.exe 所在的路径添加到 Path
环境变量,你可以在网上搜索“< Windows/Linux > 添加环境变量
Path”。
1. 根据 uvprojx 文件生成 CMakeLists.txt 和 toolchain.cmake
在任意命令行中,执行:
1 | <keil2cmake可执行文件路径> <uvision项目文件.uvprojx的路径> -o <输出目录路径> |
例如,如果 keil2cmake 可执行文件在你的主目录
(home) 下:在 Keil 项目的目录下打开 bash 并执行:
1 | ~/keil2cmake ./USER/example.uvprojx -o ./USER/ |
然后 CMakeLists.txt 和 toolchain.cmake
文件将会生成在 ./USER/ 目录下。
如果你已经完成了将
keil2cmake 添加到你的 path 环境变量的步骤,你可以只输入
keil2cmake 而不是它的完整路径,像这样:
1 | keil2cmake ./USER/example.uvprojx -o ./USER/ |
在大多数情况下,你应该将输出目录设置为 .uvprojx
文件所在的目录,因为 .c、.h
和其他文件很可能在工程文件中是以相对路径的形式组织的。如果输出目录是其他文件夹,你可能需要手动修改
CMakeLists.txt 文件中的路径。
2. 生成构建文件并编译
在上面提到的输出目录中,于命令行执行:
1 | CMake -G Ninja -B ./build . |
然后你的目标文件(.hex 和 .bin)将会生成在 ./build/
目录下。之后你可以使用 FLYMCU、ST-Link Utility
或任何你喜欢的工具将其烧录到你的 MCU 中。
在 VS Code 中使用
在 VSCode 中使用 CMake 非常简单。只需在 VS Code
中打开你项目的顶层目录,然后按 F1 并执行
CMake: Configure,./build/
目录就会被自动创建。要编译生成 .bin 和 .hex 文件,请按
F1 并执行
CMake: build。
