Add-in that allows easy use of Clang compiler from inside Visual Studio 2013, replacing the MSVC compiler when building C++ projects.
C#
Latest commit 2ff990d Apr 15, 2015 Harry Denholm update release notes
Permalink
Failed to load latest commit information.
install/VS_2013 options to override VS root envvars Apr 16, 2015
.gitignore Add bin and obj dirs to ignore. Sep 20, 2012
AssemblyInfo.cs options to override VS root envvars Apr 16, 2015
CVXBuildSystem.cs options to override VS root envvars Apr 16, 2015
CVXConnect.cs tunable max-errors-before-abandon-build; better compile-as-C and -std… Apr 16, 2015
CVXOps.cs tunable max-errors-before-abandon-build; better compile-as-C and -std… Apr 16, 2015
CVXRegistry.cs options to override VS root envvars Apr 16, 2015
CVXSettings.Designer.cs options to override VS root envvars Apr 16, 2015
CVXSettings.cs options to override VS root envvars Apr 16, 2015
CVXSettings.resx fix for formatting changes (diff tab sizes) from fork; updated readme… Oct 22, 2012
ClangVSx-Logo.ico First working version Jun 8, 2011
ClangVSx-Logo.png First working version Jun 8, 2011
ClangVSx.AddIn update to target VS2013 and Clang 3.5.1, strip out older Clang/LLVM p… Jan 14, 2015
ClangVSx.csproj fix for formatting changes (diff tab sizes) from fork; updated readme… Oct 22, 2012
ClangVSx.csproj.user Add .user file, has example debug environment, useful for others... Jun 9, 2011
ClangVSx.sln First working version Jun 8, 2011
ClangVSx.xml tunable max-errors-before-abandon-build; better compile-as-C and -std… Apr 16, 2015
ClangVSx2012.csproj fix for formatting changes (diff tab sizes) from fork; updated readme… Oct 22, 2012
ClangVSx2012.csproj.user version 3.2 changes (llvm-ld / vs2012 support) Aug 9, 2012
ClangVSx2012.sln version 3.2 changes (llvm-ld / vs2012 support) Aug 9, 2012
ClangVSx2013.csproj update to target VS2013 and Clang 3.5.1, strip out older Clang/LLVM p… Jan 14, 2015
ClangVSx2013.sln VS 2013 support Nov 6, 2014
CommandBar.resx First working version Jun 8, 2011
CommandBar1.Designer.cs version 3.2 changes (llvm-ld / vs2012 support) Aug 9, 2012
DTEHelper.cs a few fixes for relative-paths (resolved now correctly from project l… Oct 22, 2012
LICENSE.TXT First working version Jun 8, 2011
LLVM-Logo-Derivative-5.png First working version Jun 8, 2011
README.md update release notes Apr 16, 2015

README.md

ClangVSx

AddIn for Visual Studio 2013 that allows use of the Clang 3.5 C/C++ compiler in place of MSVC++. Translates VC project and build settings into gcc-friendly command line arguments, along with existing platform tools (MSVC Linker, Librarian, RC) to complete the build chain.

One click 'Build Project' testing of Clang in Windows development environments!

Futher information and screenshots are here.

Bear in mind that Clang support for Windows is incomplete and occasionally buggy. This AddIn is largely experimental and the code is likely to change a lot over time. Your milage will definately vary.

Some things not supported:

  • PCH (ignored during translation)
  • ATL / MFC projects (Clang can't handle certain ATL/COM headers properly yet)

Changes in v0.5

  • Compatibility with Clang 3.5 - deprecate previous versions and add new features, fix LTO pipeline
  • Support for VS2010/2012 will likely still work but I won't be testing or deploying those

Changes in v0.4.5

  • Compatibility with Clang 3.3 (-ccc-host-triple => -target) with 3.2 fallback

Changes in v0.4.0

  • Code clean-up courtesy of Ilibis fork
  • Settings support for toggling C++11, MS C++ ABI
  • Settings support for different platform targets (proper support for x86/x64/ARM variants)
  • Further testing on VS2012 RTM

Changes in v0.3.2

  • Support for latest Clang 3.2 changes - specifically the removal of llvm-ld during LTO phase
  • Support added for Visual Studio 2012 RC

Changes in v0.3

  • Support for LTCG (LTO) - ClangVSx will compile to LLVM bitcode, link and optimise the artifacts into a single object file before doing native code generation.

Required Compiler Patches

The latest version is tested against Clang 3.5.1.

A pre-built version of Clang for Windows, tracked to the latest code changes from SVN, is available here.


Usage

There is a directory for each Visual Studio platform supported in the pre-built zip.

VS2013: Copy .AddIn and built ClangVSx.dll from the VS_2013/ directory into C:\Users\<username>\Documents\Visual Studio 2013\Addins\

A new top-level Clang menu will be created, offering a settings dialog (to choose location of compiler) and Rebuild Active Project or Relink A context-menu option is added to code editor windows that allows for Clang-specific tasks to be performed on that code.


Release Notes

Version 0.5.2 (2015-04-16)

  • Control max-errors-before-build-abandon in Settings
  • Override VS envvars for root tool paths can be overridden in Settings
  • Better support for C - testing with libsodium, opus, libvpx
  • Better support for custom build tasks - testing with YASM in libvpx
  • Can cancel rebuilds

Version 0.5.0 (2015-01-15)

  • Support for Clang 3.5
  • Support for Visual Studio 2013

Version 0.4.5 (2012-12-04)

  • Support for Clang 3.3

Version 0.4.0 (2012-10-22)

  • Testing against VS 2012 RTM, Windows 8
  • More settings options, better support for 32/64 bit project targets in VS

Version 0.3.2 (2012-08-09)

  • Removed use of llvm-ld, no longer available in recent Clang 3.2 builds
  • Added support for Visual Studio 2012 RC

Version 0.3 (2012-05-28)

  • Tidied up preferences, added more diagnotics options in the settings dialog
  • Tested with latest Clang 3.2 builds and some more adventurous Win32 projects
  • Added support for LTO / LTCG

Version 0.2 (2011-06-18)

  • Refactor build system to be much cleaner and easier to read and maintain
  • Added MIDL support
  • Successfully tested against smallpt - requires static init patch above
  • Tested with a stripped-down DirectX 9 demo - requires a little IUnknown hack

Version 0.1 (2011-06-09)

  • Initial commit of working version, tested with Clang 3.0
  • Tested against LAME plus a few simple wizard-generated Win32 apps from VS2010 :
    • DLL, Static Library, Application
    • Console Application