Thread (14 messages) flat view 14 messages, 3 authors, 2021-05-31

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

From: Matt Rogers <hidden>
Date: 2021-05-29 15:49:43

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.

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.  As you noted the
Ninja generator
is os-agnostic and doesn't imply a compiler unlike the Visual Studio family of
generators.

running CMake with -DMSVC=1 should resolve the issue (Assuming you're
actually using
an MSVC based compiler).  If the CMake is intended to support non-MSVC
compilers like
clang, etc. and vcpkg is required to do that build then the MSVC
portion of the check
should be removed, otherwise I am not sure if it's a Visual Studio
issue for not correctly
configuring with MSVC=1 when using an MSVC-based compiler or on the
CMakeList.txt file
for not correctly specifying when vcpk_install.bat needs to be
installed.  I don't really
know what vcpkg does in the build to be sure though.

1: https://cmake.org/cmake/help/latest/variable/MSVC.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help