2017-01-12 6 views
1

У меня возникли проблемы с последним шагом в создании clang для работы с корпоративным режимом на emacs.Режим компании-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 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, однако, кажется, работа хорошо. Использование стандартного ввода для ввода файла с помощью 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 отсутствует?

ответ

2

Я обнаружил, что проблема заключалась в том, как были установлены пути «-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 делает интерпретацию.

В качестве дополнительного примечания это работает с clang в комплекте с VS2015 Release 2 и, по крайней мере, вверх. Он также должен работать с официальными релизами.