【问题标题】:Company-clang mode in emacs on windowsWindows 上 emacs 中的 Company-clang 模式
【发布时间】:2017-01-12 13:29:32
【问题描述】:

我在让 clang 在 emacs 上使用公司模式的最后一步遇到问题。

我有

(setenv "PATH" (concat (getenv "PATH") ";C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\amd64;C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\bin\\amd64\\amd64;"))
(custom-set-variables
'(company-c-headers-path-system
   (quote
    ("c:/users/chowron/Documents/Development/include" "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\include" "C:\\Program Files (x86)\\Windows Kits\\8.1\\Include\\shared" "C:\\Program Files (x86)\\Windows Kits\\8.1\\Include\\um")))
 '(company-clang-arguments
   (quote
    ("-I \"C:\\\\Program Files (x86)\\\\Microsoft Visual Studio 14.0\\\\VC\\\\include\"" "-I \"c:\\\\Program Files (x86)\\\\Windows Kits\\\\10\\\\Include\\\\10.0.10586.0\\\\ucrt\"" "-I \"c:\\\\users\\\\chowron\\\\Documents\\\\Development\\\\include\"")))
 '(company-clang-executable
   "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\ClangC2\\bin\\amd64\\clang.exe")
 '(company-clang-insert-arguments nil))

在一个简单的程序中

#include <iostream>
#include <string>
int main(int argc, char** argv) {
  std::string food;
  food. // Completion at point here
}

我在 clang-error

中看到
clang failed with error 1:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\ClangC2\bin\amd64\clang.exe -fsyntax-only -Xclang -code-completion-macros -x c++ -I "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\include" -I "c:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.10586.0\\ucrt" -I "c:\\users\\chowron\\Documents\\Development\\include" -Xclang -code-completion-at=-:9:8 -

<stdin>:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^
1 error generated.

在 CMD.exe 上运行它,但似乎工作正常。使用 stdin 输入最后带有 CTRL-Z 的文件会给出一堆警告,最终

...
COMPLETION: pop_back : [#void#]pop_back()
COMPLETION: push_back : [#void#]push_back(<#char _Ch#>)
COMPLETION: rbegin : [#reverse_iterator#]rbegin()
COMPLETION: rbegin : [#const_reverse_iterator#]rbegin()[# const#]
...

所以我认为我在 emacs 中设置好命令行参数和路径,但是缺少一些设置或 emacs 功能?

【问题讨论】:

    标签: c++ windows emacs clang


    【解决方案1】:

    我发现问题在于如何设置包含“-I”路径。对于可能遇到相同问题的任何人。

    在 .emacs 设置中,你必须像这样写

    (quote
        ("-IC:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\include" "-Ic:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.10586.0\\ucrt" "-Ic:\\users\\chowron\\Documents\\Development\\include" "-v")))
    

    “Program Files (x86)...”路径周围没有引号。让 clang 做解释。

    作为额外说明,这至少适用于与 VS2015 Release 2 及更高版本捆绑的 clang。它也应该适用于官方版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-12
      • 1970-01-01
      • 2011-06-09
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多