diff options
author | Brad King <brad.king@kitware.com> | 2022-07-26 13:24:46 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2022-07-26 13:24:54 (GMT) |
commit | 7afbfcb184f888a3add478ed97c17966ca304bb9 (patch) | |
tree | c9eb21dc88a4007f33ca48d5d63ece6d70425fe1 /Source/cmSystemTools.cxx | |
parent | 58372b69008e874bb5fe0775a78e157d29adaa2f (diff) | |
parent | ee047a68f27d9636d681d05252257da636b616a2 (diff) | |
download | CMake-7afbfcb184f888a3add478ed97c17966ca304bb9.zip CMake-7afbfcb184f888a3add478ed97c17966ca304bb9.tar.gz CMake-7afbfcb184f888a3add478ed97c17966ca304bb9.tar.bz2 |
Merge topic 'refactor-win-ver'
ee047a68f2 cmSystemTools: Factor out method to get Windows OS version
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !7509
Diffstat (limited to 'Source/cmSystemTools.cxx')
-rw-r--r-- | Source/cmSystemTools.cxx | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index 3de45bc..93a6f64 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -107,6 +107,10 @@ # include <sys/utsname.h> #endif +#if defined(_MSC_VER) && _MSC_VER >= 1800 +# define CM_WINDOWS_DEPRECATED_GetVersionEx +#endif + namespace { cmSystemTools::InterruptCallback s_InterruptCallback; @@ -904,6 +908,40 @@ cmSystemTools::WindowsFileRetry cmSystemTools::GetWindowsDirectoryRetry() InitWindowsDirectoryRetry().Retry; return retry; } + +cmSystemTools::WindowsVersion cmSystemTools::GetWindowsVersion() +{ + /* Windows version number data. */ + OSVERSIONINFOEXW osviex; + ZeroMemory(&osviex, sizeof(osviex)); + osviex.dwOSVersionInfoSize = sizeof(osviex); + +# ifdef CM_WINDOWS_DEPRECATED_GetVersionEx +# pragma warning(push) +# ifdef __INTEL_COMPILER +# pragma warning(disable : 1478) +# elif defined __clang__ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wdeprecated-declarations" +# else +# pragma warning(disable : 4996) +# endif +# endif + GetVersionExW((OSVERSIONINFOW*)&osviex); +# ifdef CM_WINDOWS_DEPRECATED_GetVersionEx +# ifdef __clang__ +# pragma clang diagnostic pop +# else +# pragma warning(pop) +# endif +# endif + + WindowsVersion result; + result.dwMajorVersion = osviex.dwMajorVersion; + result.dwMinorVersion = osviex.dwMinorVersion; + result.dwBuildNumber = osviex.dwBuildNumber; + return result; +} #endif std::string cmSystemTools::GetRealPathResolvingWindowsSubst( |