Я пытаюсь скомпилировать MPIR (версия GMP для Windows).У меня установлена Visual Studio 2017, так что она должна работать, но я получаю это сообщение об ошибке:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: 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". [C:\mpir\msvc\vs17\lib_mpir_gc\lib_mpir_gc.vcxproj]
Мне специально нужно добраться до точки, где она может быть скомпилирована на любой машине,не только этот, так что установка именно этой версии SDK на этом компьютере не решит проблему.Мне нужно что-то изменить, чтобы заставить его строить с Visual Studio 2017.
Глядя в C:\mpir\msvc\vs17\lib_mpir_gc\lib_mpir_gc.vcxproj
, я нахожу строку:
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
Что выглядит многообещающе, но удаление его не имеет никакого эффекта;сообщение об ошибке остается без изменений.
Что я могу изменить, чтобы устранить эту ошибку?
Подводя итог, я считаю, что это возможно:
Если вы пишете программу на C ++Скажем, в простейшем сценарии, в одном файле с именем foo.cpp
, и скомпилируйте его с помощью компилятора командной строки cl foo.cpp
, он автоматически скомпилирует и свяжет с любой версией SDK, используемой текущей установкой Visual Studio, для генерации foo.exe
, которая(если вы не использовали какой-то очень специализированный API, доступный только в более поздних версиях Windows), будет работать на любой Windows, по крайней мере, с Vista.
И это точно такой же cl.exe
, который вызывается msbuild.Так что я не прошу новый функционал.Скорее, вышеупомянутое сообщение об ошибке генерируется, потому что что-то старалось изо всех сил , чтобы сломать сценарий по умолчанию «это просто работает» и добавить блокировку к определенной версии SDK.Я спрашиваю, как снять блокировку и вернуться к сценарию по умолчанию, где он просто работает с любой версией SDK, с которой поставляется Visual Studio.