【ESP-IDF】使用 clangd 出现错误:espidf Unknown argument ‘-mlongcalls‘; did you mean ‘-mlong-calls‘?

问题

Support a language server (like ccls or clangd) (IDFGH-4929)

在 ESP-IDF extension for vscode 中,使用 clangd 出现

espidf Unknown argument '-mlongcalls'; did you mean '-mlong-calls'?

原因

clangd 不支持这些编译选项。

解决方法

1.配置 clangd 扩展

1.去 VSCode 拓展中下载 clangd 拓展,下载完后,它会提示是否自动下载 clangd,可以自由选择。

需要注意的是,clangd 19.1.2 有问题,所以不要使用,请使用 20.1 或更高的版本。

2.进入 clangd 扩展设置,填写 clangd 的路径,如果直接填写 clangd 的话,需要配置 Windows 的环境变量。
设置 Clangd: Arguments

--query-driver=C:/Users/ShiinaKaze/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc.exe,C:/Users/ShiinaKaze/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/xtensa-esp32s3-elf-g++.exe

3.然后去你的项目根目录下,创建名为 .clangd 的文件,该文件格式为 YAML(可以下一个 YAML 扩展,方便编写),填写如下内容:

CompileFlags:
  Remove:
    [
      -mlongcalls,
      -mdisable-hardware-atomics,
      -fno-shrink-wrap,
      -fstrict-volatile-bitfields,
      -fno-tree-switch-conversion,
    ]
Diagnostics:
  Suppress: [-Werror, -Wunused-lambda-capture]

4.重启 VSCode

其他方法(未完善)

虽然 ESP-IDF 扩展默认编译器不是 clang,但是仍然可以配置使用,并且 clang 由 espressif 提供。

1.配置 ESP-IDF 扩展

在 ESP-IDF 扩展设置中找到 Idf: Custom Extra Vars,添加 Item 为 IDF_TOOLCHAIN,value 为 clang。

在这里插入图片描述

2.配置 clangd 扩展

1.去 VSCode 拓展中下载 clangd 拓展,下载完后,它会提示是否下载 clangd,可以自由选择,因为我们使用 esp 所提供的 clang 工具链也会提供 clangd。

2.下载 esp-clang,解压,例如我的解压路径为:

D:\Development\Tools\esp-clang

3.设置 clangd 扩展的 Clangd:path 为刚刚解压的 clang,注意,设置的路径为 D:\Development\Tools\esp-clang\bin

在这里插入图片描述
4.配置 clang 的系统环境变量 Path,而不是用户变量。

在这里插入图片描述
5.重启 VSCode,结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值