-
Notifications
You must be signed in to change notification settings - Fork 99
Setting up irony mode on Windows using MSVC
The findings in this article are based on https://github.com/Sarcasm/irony-mode/issues/280; All findings have been based on the following system: MSVS 2015, clang 3.7 (x86), Windows 7 x64, Emacs 24.5 and Irony server version (TODO)
In order to use Irony-Mode for completions for an MSVS 2015 project it is suggested to load emacs after establishing the MSVS environment. This can be done in a number of ways, but I convenient way is to create batch file along the lines of:
echo "Establishing Visual Studio variables..."
call "c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC/vcvarsall.bat" amd64
echo "Running emacs..."
c:\emacs-24.5\bin\runemacs.exe
After running this batch file, the environment variables needed by Clang are set up; these are variables such as the Windows SDK includes and MSVS includes, etc.
Now we need to supply the compiler options to Clang for completions. At the very least, you should have the following in your .clang_complete file:
-target i686-pc-windows-msvc -fms-extensions -fms-compatibility -fms-compatibility-version=19 -fdelayed-template-parsing
This basic set of options tells Clang that it should be dealing with the MSVS context.
However, that is not all. The chances are you are working with a project that has include directories, definitions etc. Therefore, in addition to the flags above, you should add:
--driver-mode=cl /nologo /DWIN32 /D_WINDOWS /W3 /GR /EHsc /EHs /D_HAS_EXCEPTIONS=0
All of the options that start with / are MSVS style options. The ones provided here are just an example, you should ideally replace all of them with whatever your project uses in MSVS.