Как указать версию CMake, используемую vcpkg - PullRequest
4 голосов
/ 17 марта 2019

Короткая версия: vcpkg не может собрать пакет со следующей ошибкой:

Unable to determine appropriate CMake MSBuild generator for:
  Windows-x64-v142  
This is because CMake 3.12.4 does not currently have a 'Visual Studio 16
  2019' option.

даже если установлен cmake 3.14. Я хотел бы сказать, что использовать cmake 3.14

Длинная версия:

Справка:

Я экспериментирую с visual studio 2019 и vcpkg. В настоящее время у меня есть Visual Studio 2017 и VCPKG работает отлично.

Установка:

Я создал новый триплет с целью установки моих пакетов 14.2 вместе с моими пакетами 14.1. Этот триплет, который я назвал x64-windows-dynamic-2019-142, точно такой же, как стандартный триплет x64-windows, но я добавил к нему VCPKG_VISUAL_STUDIO_PATH и VCPKG_PLATFORM_TOOLSET. Полный файл триплета выглядит так:

set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_VISUAL_STUDIO_PATH "C:\\Program Files (x86)\\Microsoft Visual 
Studio\\2019\\Community")
set(VCPKG_PLATFORM_TOOLSET "v142")

Я вытащил vcpkg, чтобы быть в курсе новейшей главной ветки, и перезапустил bootstrap-vcpkg.bat.

Проблема:

Когда я запускаю vcpkg install sfml:x64-windows-dynamic-2019-142 Он устанавливает многие зависимости sfml без ошибок, но не может установить sfml, ссылаясь на ошибку, о которой я упоминал выше.

Я запутался, почему не удалось построить зависимости, но я действительно хотел бы знать, как заставить vcpkg использовать мой установленный и обновленный CMake, чтобы он мог завершить сборку.

Когда я запускаю 'cmake --version' в той же оболочке power, из которой я устанавливаю sfml, возвращается "cmake version 3.14.0"

1 Ответ

1 голос
/ 06 апреля 2019

Попробуйте установить переменную среды VCPKG_FORCE_SYSTEM_BINARIES перед вызовом vcpkg.exe, т. Е .:

C:\vcpkg>set VCPKG_FORCE_SYSTEM_BINARIES=1
C:\vcpkg>vcpkg install sfml:x64-windows-dynamic-2019-142

Обратите внимание, что инструменты cmake.exe, git.exe и ninja.exe должны быть доступны на пути.

...