У меня есть проект CMake, который имеет внешнюю зависимость (Crypto ++).Для внешнего проекта предоставляется файл vcxproj
, поэтому, чтобы добавить его в процесс сборки, я добавил его так:
ExternalProject_Add(CryptoPP
SOURCE_DIR ${CRYPTOPP_SRC_DIR}
CONFIGURE_COMMAND ""
BUILD_COMMAND "${MSBUILD_EXE}"
"/p:OutDir=<BINARY_DIR>/bin/$<CONFIG>/"
"/p:IntDir=<BINARY_DIR>/obj/$<CONFIG>/"
"/p:Configuration=$<CONFIG>"
"/p:Platform=${CMAKE_VS_PLATFORM_NAME}"
"<SOURCE_DIR>/${CRYPTOPP_PROJECT}"
INSTALL_COMMAND "${CMAKE_COMMAND}" -E make_directory <INSTALL_DIR>/lib
COMMAND "${CMAKE_COMMAND}" -E copy <BINARY_DIR>/bin/$<CONFIG>/cryptlib${CMAKE_STATIC_LIBRARY_SUFFIX} <INSTALL_DIR>/lib
)
Это работало нормально, пока я не начал использовать Windows 10. Теперь яполучаю эту ошибку: The Windows SDK version 8.1 was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solution and selecting "Retarget solution"
.
Я пытался передать версию SDK из CMake, используя единственную связанную переменную CMake , которую я мог найти, добавив этот флаг в msbuild:
"/p:WindowsTargetPlatformVersion=${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}"
Однако, я все еще получаю ту же ошибку.Я попытался отобразить значение переменной CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION
, и оно всегда кажется пустым.
Изменение зависимости vcxproj
не вариант.Я заранее не знаю, какую версию SDK установил тот, кому нужно собрать проект, так что это не вариант.
Я не могу найти способ получить и передать версию SDK во внешнюю сборку проекта.что я делаю не так?