On 29/05/2021 19:33, Sibi Siddharthan wrote: > On Sat, May 29, 2021 at 9:55 PM Philip Oakley <philipoakley@iee.email> wrote: >> On 29/05/2021 16:49, Matt Rogers wrote: >>> I have some experience at my job with CMake, but some quick testing >>> has found that adding a check like: >>> >>> message("MSVC = ${MSVC} , WIN32 = ${WIN32}) >>> >>> shows that the MSVC is uninitialized and WIN322 is initialized. so the >>> issue is that the MSVC variable isn't being set which is causing >>> vcpkg_install.bat to not run, rather than the WIN32 variable. >> Thanks for confirming what I'm seeing. It's good to have. >>> The msvc variable is intended to be set whenever the compiler is a Visual C/C++ >>> compiler [1]. And it seems like visual studio should be setting that itself >>> either via a toolchain or some other mechanism. > CMake sets this variable. > Please see {CMAKE_INSTALLATION}/share/cmake-<version>/modules/Platform/Windows-MSVC.cmake. > This happens after CMake is required to find a compiler. > This happens in line:93 where we enable the C language. Ahh, so it (MSVC) would be unset at that point no matter what at that early point in the code, yes? > > To fix this I would suggest to change line:53 > > - if(MSVC AND NOT EXISTS ${VCPKG_DIR}) > + if(CMAKE_GENERATOR MATCHES "Visual Studio" AND NOT EXISTS ${VCPKG_DIR}) I'd seen this one recommended on a few StackOverflow answers but it no longer works (for a new install of Visual Studio) because CMAKE_GENERATOR is now set to "Ninja" as default (sigh). Simply dropping the MSVC test may be one option - we are already guarded by the earlier WIN32 test so were aren't on another OS, though I expect there could be some who want to not use VS, and already have options.. > and > add CMakeSettings.json to force Visual Studio to use MSBuild. I was trying to avoid requiring VS users do any extra set up steps. Too many steps often puts off new users, and forcing a change could be annoying for established users - hence the caution. > Please see https://docs.microsoft.com/en-us/cpp/build/cmakesettings-reference?view=msvc-160 I'll have a look. Thanks.