Улучшенная версия ответа KneLLs:
macro(get_WIN32_WINNT version)
if (WIN32 AND CMAKE_SYSTEM_VERSION)
set(ver ${CMAKE_SYSTEM_VERSION})
string(REGEX REPLACE "^([0-9])[.]([0-9]).*" "0\\10\\2" ver ${ver})
set(${version} "0x${ver}")
endif()
endmacro()
get_WIN32_WINNT(ver)
add_definitions(-D_WIN32_WINNT=${ver})
Версия KneLLs не работала в моем случае, потому что CMAKE_SYSTEM_VERSION
был 6.3.9600
, что привело к ${ver}=0x060306090000
Эта версия не будет работать для Windows 10 и более поздних версий. Нужно проверить, больше ли первое число, чем 9, и преобразовать его в правильное шестнадцатеричное значение.