Added script to identify Windows version

Added script to identify the Windows version used to compile the source.
Currently the windows version for Windows NT is hard coded into the
source. By running this CMake script the _WIN32_WINNT preprocessor
variable gets set to the corresponding windows version.
This commit is contained in:
Björn Blissing 2017-11-30 12:53:24 +01:00
parent e8f7eeb5dc
commit 09eefd7973
3 changed files with 36 additions and 1 deletions

View File

@ -344,6 +344,10 @@ ENDIF()
IF(WIN32 AND NOT ANDROID)
# Check window version
INCLUDE (OsgDetermineWinVersion)
get_WIN32_WINNT(WIN_VERSION)
ADD_DEFINITIONS(-D_WIN32_WINNT=${WIN_VERSION})
IF(MSVC)
# This option is to enable the /MP switch for Visual Studio 2005 and above compilers

View File

@ -0,0 +1,22 @@
# - If Windows is used, this script sets the variable WIN32_WINNT to the corresponding windows version
if (WIN32)
message(STATUS "Checking windows version...")
macro(get_WIN32_WINNT version)
if (CMAKE_SYSTEM_VERSION)
set(ver ${CMAKE_SYSTEM_VERSION})
string(REGEX MATCH "^([0-9]+).([0-9])" ver ${ver})
string(REGEX MATCH "^([0-9]+)" verMajor ${ver})
# Check for Windows 10, b/c we'll need to convert to hex 'A'.
if ("${verMajor}" MATCHES "10")
set(verMajor "A")
string(REGEX REPLACE "^([0-9]+)" ${verMajor} ver ${ver})
endif ("${verMajor}" MATCHES "10")
# Remove all remaining '.' characters.
string(REPLACE "." "" ver ${ver})
# Prepend each digit with a zero.
string(REGEX REPLACE "([0-9A-Z])" "0\\1" ver ${ver})
set(${version} "0x${ver}")
endif(CMAKE_SYSTEM_VERSION)
endmacro(get_WIN32_WINNT)
endif(WIN32)

View File

@ -16,8 +16,17 @@
#include <osgViewer/Export>
// Fallback if not correctly detected in CMake macro
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0500
//#define _WIN32_WINNT 0x0A00 // Windows 10
//#define _WIN32_WINNT 0x0603 // Windows 8.1
//#define _WIN32_WINNT 0x0602 // Windows 8
//#define _WIN32_WINNT 0x0601 // Windows 7
//#define _WIN32_WINNT 0x0600 // Windows Server 2008
//#define _WIN32_WINNT 0x0600 // Windows Vista
//#define _WIN32_WINNT 0x0502 // Windows Server 2003 with SP1, Windows XP with SP2
//#define _WIN32_WINNT 0x0501 // Windows Server 2003, Windows XP
#define _WIN32_WINNT 0x0500 // Windows NT
#endif
#include <windows.h>