fix: if WINDOWS_SDK_PATH is not defined, find via find_program

This commit is contained in:
DwifteJB 2026-03-05 06:49:35 +00:00
parent 592bc6de6a
commit d74cd1cd6a
No known key found for this signature in database
GPG key ID: E9A084A6DBE8B6A0

View file

@ -14,6 +14,31 @@ set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES WINDOWS_SDK_PATH) # You have no idea ho
message(STATUS "WINDOWS_SDK_PATH=${WINDOWS_SDK_PATH}")
# if not exists WINDOW_SDK_PATH try find
if(NOT WINDOWS_SDK_PATH)
if(DEFINED ENV{WINDOWS_SDK_PATH})
# rm: check if defined within env instead
set(WINDOWS_SDK_PATH $ENV{WINDOWS_SDK_PATH})
else()
# rm: not found? check to find msbuild wrapper from mscv-wine
find_program(_msbuild_exe msbuild)
if(_msbuild_exe)
get_filename_component(_msbuild_bin ${_msbuild_exe} DIRECTORY) # .../bin/x64
get_filename_component(_candidate "${_msbuild_bin}/.." ABSOLUTE) # .../bin
if(NOT IS_DIRECTORY "${_candidate}/vc")
get_filename_component(_candidate "${_candidate}/.." ABSOLUTE) # .../<root>
endif()
message(STATUS "Found Windows SDK Path in ${_candidate}")
set(WINDOWS_SDK_PATH ${_candidate})
else()
# rm: assume /opt/msvc as a fallback (which is usually the default path)
message(STATUS "Fallback to ${_candidate}")
set(WINDOWS_SDK_PATH /opt/msvc)
endif()
endif()
endif()
if(NOT EXISTS "${WINDOWS_SDK_PATH}/kits/10/Include")
message(FATAL_ERROR "Invalid WINDOWS_SDK_PATH: ${WINDOWS_SDK_PATH}")
endif()