有兄弟使用emacs写一些单片机代码工程文件吗?例如STM32

原来是使用vscode操作的,最近转移到linux下面来,顺便想转换一下编辑器,有兄弟知道emacs怎么管理工程文件吗,可以不用编译,编辑起来再说。 最好,类似source insight一样就更爽了。

1 个赞

我的是用 CLion 生成 CMake 文件,用 Emacs+lsp-mode编辑,用 CMake 编译,调用 openocd 进行下载

兄弟有无一些安装教程,还有使用教程呀。我感觉是没法在ubuntu工作。但是emacs是必须带回windows10。把vscode砍掉。

我一直只用Emacs做嵌入式开发,用rust和c都写过。

但是这不是Emacs的问题吧,这是单片机的问题。

github上一搜索stm32,一大堆。

用cc-mode,ccls,和lsp,自己写MakeFile(或者用工具导出),用arm-gcc系列工具编译就能很好工作,逐步调试可以用Emacs的gdb,或者有大神写过一个增强的gdb插件。

Rust的话,直接搜Awesome Embedded Rust很多相关的研究。

我想了一下,我需要的是各种跳转,查找函数调用,定义等等。 lsp-mode感觉网上介绍不多呀。 那种etags,gtags,可行吗。

如果你熟悉VIM的话,那么推荐陈斌老师的配置。他的配置完全符合你的要求,而且整体速度也很快,可以去看看。

同样尝试用emacs写c, 正在学这个

我熟悉vim,最开始的编辑器就是vim,但是更喜欢emacs,后面就全忘vim了,还是打算折腾一下emacs。

lsp-mode很多啊

我没用过etags,gtags,当然也可以,很多人不用lsp。

单片机最重要的是索引硬件库的头文件。

你用工具生成

compile_commands.json

用来跳转。

因为编译如果用到硬件库,最好用厂家自带的工具生成项目,里面会有MakeFile(怎样链接硬件库都在MakeFile里面了),然后用arm-none-eabi-gcc编译就行了。

自己写MakeFile工作量巨大,不建议。

配置Emacs的嵌入式开发环境不容易,需要点时间,文档也不多,但是我配置好后绝对可以取代那些厂家垃圾IDE了,我用了几年了,没有问题,而且我在Mac上做开发的。

ccls配置:

(use-package ccls
  :defer t
  :config
  ;; for firmware arm project
  (setq ccls-initialization-options '(:clang
                                      (:extraArgs
                                       ;; ["-isystem/usr/local/Cellar/arm-none-eabi-gcc/9-2019-q4-major/gcc/arm-none-eabi/include/" "-isystem/Library/Developer/CommandLineTools/usr/include/c++/v1" "-isystem/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include" "-isystem/usr/local/include"]
                                       ["-isystem/usr/local/Cellar/arm-none-eabi-gcc/9-2019-q4-major/gcc/arm-none-eabi/include/"]
                                       ;; :resourceDir "/Library/Developer/CommandLineTools/usr/lib/clang/11.0.0")))
                                       :resourceDir "/usr/local/Cellar/arm-none-eabi-gcc/9-2019-q4-major/gcc/arm-none-eabi/include/"))))

用工具生成compile_commands.json文件,

然后项目下创建.ccls 和一个空白的.ccls-root文件,

.ccls内容

%compile_commands.json
--target=arm-none-eabi
-I/usr/local/Cellar/arm-none-eabi-gcc/9-2019-q4-major/gcc/lib/gcc/arm-none-eabi/9.2.1/include
6 个赞

兄弟可以阿,我持续关注一下,下班就鼓捣,有问题咨询你,我也是因为emacs开发单片机,抡了一轮的度娘,发现有效资料太少

道友,我要是能早几年知道你就好了

1 个赞

不用vim的按键也可以使用我的配置, 把 (require 'init-evil) 这一行从init.el注释掉就行了.

轻量级开发,可以使用,

  • company-ctags 提供代码自动完成
  • counsel-etags 代码自动导航.

以上两个插件需要命令行工具ctags(推荐 universal-ctags, 而不是操作系统或emacs可能自带的ctags/etags).

文件文本搜索的话如果已用了git安装counsel就行了,它提供了两个命令,

  • counsel-git-grep搜索文本
  • counsel-git找文件

兄弟,我现在正点原子的一个库函数的工程文件,怎么生成compile_commands.json呀?有教程么

(并不难找的说,另外使用前记得 clean build

对的 很多工具 自己搜一下

用谷x试试吧

1 个赞

不懂呀,命令是啥, bear – ,我看里面介绍说的命令是这个,然后your-build-command是啥东西呀,纯小白一个。