Re: [RFH] CMake: detect if being run via Visual Studio, independent of build generator?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux