【问题标题】:emacs lsp c-mode: Command "clangd" is not present on the pathemacs lsp c-mode:路径上不存在命令“clangd”
【发布时间】:2019-09-05 09:52:33
【问题描述】:

我想使用 Emacs LSP c-mode,但我收到错误消息“路径上不存在命令“clangd”。

我做了以下安装步骤:

  1. 从 melpa-stable 获取 lsp 包
  2. 从 melpa-stable 获取 company-lsp
  3. 使用自制软件获取 ccls
  4. 将以下内容添加到我的 .emacs 文件中:

    (需要'lsp-mode) (add-hook 'rust-mode-hook #'lsp) (add-hook 'c-mode-hook #'lsp) (需要'公司-lsp) (push 'company-lsp company-backends)

我已经使用自制软件安装了 llvm(应该包括 clang)并将其路径添加为环境变量。

有人知道我为什么会收到这个错误吗?

【问题讨论】:

  • 您究竟是如何“将其路径添加为环境变量”
  • 在我的 .bash_profile 文件中添加了“export PATH=/usr/local/opt/llvm/bin:$PATH”。
  • 查看 Emacs 中的 exec-path(getenv "PATH")。如果他们没有您的目录,那么您不会以 Emacs 看到的方式添加它。您可以简单地将其添加到exec-path,它可能会起作用(exec-path 在启动时从$PATH 初始化;通常$PATH 在 Emacs 中启动后不会使用)。
  • 我今天让它在 Linux (Debian 10) 上工作。在我的 emacs 文件中,我必须添加:(setq lsp-clients-clangd-executable "/usr/lib/llvm-9/bin/clangd")。也许你需要做类似的事情。
  • 我建议您确认您已获得 clangd。

标签: emacs clang clangd emacs-lsp


【解决方案1】:

我刚刚成功地设置了它。

问题是在 os x 上使用 GUI emacs 时您的环境变量没有正确导入。 特别是,如果您在 emacs 中尝试 evaluating

(getenv "PATH")

你会得到与运行时不同的输出

echo $PATH

在您的终端中。

我已按照建议的here 安装exec-path-from-shell 解决了这个问题。

最后,仔细检查(即使你已经提到,你已经这样做了)你不仅安装了 llvm,而且还通过运行正确地将它添加到你的路径中

brew install llvm
ln -s "$(brew --prefix llvm)/bin/clangd" "/usr/local/bin/clangd"

如建议here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2022-08-10
    • 2013-12-24
    相关资源
    最近更新 更多