Status on UWP & Clang?

Dec 26, 2015 at 7:55 AM
Our C++ app is now live on winrt 8.1, winphone 8.1, amazon, google x86, and google arm. In cert on ios. Soon on Facebook.com in pure html/js (via emscripten). Our compilation projects are created via cmake.
  1. When can we expect UWP support?
    If cmake doesn't support it, we won't support Windows 10.
    If cmake supported it, it would be trivial to create winrt8.1-x86, winrt8.1-x64, winrt8.1-arm, winphone8.1-arm, and winrt_uwp-x86 and -x64 (-arm is dead to UWP now right?).
  2. When can I create a VS2015 project that uses the clang toolchain?
    See the list of our live apps? Everything except winrt/phone compiles with clang. Supporting both MSVC & clang is a constant drag on our developer productivity. It would be wonderful to compile everything with clang.
    To be clear on why this matters - we compile C/C++ code with every possible warning enabled. That means maintaining two lists of warnings to ignore or support.
Interestingly, there are obvious problem flagged by MSVC that clang ignores (e.g. float->int, int->float in some cases).
Coordinator
Dec 31, 2015 at 8:24 PM
Hi Ted,

Clang support is something that we've been considering, especially for our WinOBJC project. UWP still supports ARM, since Windows Phones are running on ARM.
At this time, Clang doesn't support ARM yet, so getting a full support for all the platforms will not be complete.

I'll discuss the feature with the team and see what can be done.

Also, if you can give us some samples, that would be great.
Coordinator
Jan 26, 2016 at 5:33 AM
I've looked into this and it doesn't look too bad.

I've pushed a first prototype that's able to compile a real simple program.

https://github.com/Microsoft/CMake/tree/feature/clang_3_7

I'll keep working on fixing things, but hopefully it can be a start to figure out the rest of the work needed.

There are two ways to invoke Clang.

The first one is to specify the toolset from the command-line
cmake -G "Visual Studio 14 2015" -T v140_clang_3_7 ...

The second one is to set a target property on a project to have that one specifically use the Clang toolchain
set_property(TARGET ${project} PROPERTY VS_PLATFORM_TOOLSET_OVERRIDE "v140_clang_3_7")

Also, it might be easier to have issues posted on our GitHub page as this is where development is being done.

Thanks
~Gilles