Subject: Re: [boost] Status of Visual Studio 2017 support
From: Andrew Pardoe (Andrew.Pardoe_at_[hidden])
Date: 2017-02-16 03:31:57
[Gavin] Maybe I'm just misreading something, but is that saying that the point of the changes is to allow multiple versions of VS2017 to be installed side-by-side? What's the point of doing that?
This is a feature that many developers have asked for. In addition to being able to have different versions of VS installed side-by-side, VS now uninstalls cleanly (except for "singletons", items like the .NET Framework or the Windows SDKs that get installed in one known location per machine.) Also, we no longer need a hacked-up C++ Build Tools SKU: it's supported by the installer. In fact, you can pretty much always install just what you need though possibly not to the desired granularity. You can have a machine with just C++ and no C# if you like.
Yes, each of these features were attainable without the other and you're welcome to question the value of any single one. But as the VS development cycle accelerates we hope the benefits of this work become more clear. If not, sorry to complicate your life unnecessarily : )
[Tom] Yes! We need a way to do it without compiling any code. See the discussion in this (nasty) pull request:
I've responded on the issue related to the PR. To summarize, you have three options. One is to pull down a pre-built binary from your repo. (I'm looking into whether we can't get this binary installed with MSVC to a known location, but no promises.) Another is to use PowerShell, but that has its own issues. The last is a piece of ugly command script that brute forces the problem. See the issue or read on for more.
[Rene] But I'm tired of thinking how to sold Microsoft problems. And instead invite you to solve the Boost Build problem in regards to VS15. Can you make this script <https://github.com/boostorg/build/blob/develop/src/engine/build.bat> correctly build b2.exe with vs15 portably without any outside requirements, other than VS15 is installed? And make it not fail for Windows 7 and onward at minimum.
We do have a lot of Microsoft problems, it's true. And sometimes we make new ones. Sorry for that, and thank you for pointing out when we do.
Here's an ugly and inefficient bit of command script that might work for your purposes:
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do for /F "tokens=*" %%j in ('dir /s /b %%i:\vcvars64.bat') do call "%%j"
call where cl.exe && (echo success) || (echo cl.exe not found)