cmake - 如何指定 vcpkg 使用的 CMake 版本
问题描述
简短版本: 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 拉到最新的 master 分支并重新运行 bootstrap-vcpkg.bat。
问题:
当我运行vcpkg install sfml:x64-windows-dynamic-2019-142
它时,它会安装 sfml 的许多依赖项而没有错误,但由于我上面提到的错误而无法安装 sfml。
我很困惑为什么依赖项没有构建失败,但我真正想知道的是如何让 vcpkg 使用我安装的和最新的 CMake,以便它可以完成构建。
当我在安装 sfml 的同一电源外壳中运行“cmake --version”时,它返回“cmake version 3.14.0”
解决方案
在调用之前尝试设置环境变量VCPKG_FORCE_SYSTEM_BINARIESvcpkg.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
在路径上可用。
推荐阅读
- python - 正则表达式在单词之前提取数字,同时忽略某些行
- c# - 从 c# 或 .cmd 提示符执行 .sh
- c++ - 类模板专业化推导是否应该推导引导参数初始化?
- java - 带有postgres sql的spring boot框架,运行时发生异常
- javascript - 从onclick插入到数据库执行php脚本
- django - 在 Django 中添加模型级别权限的步骤
- javascript - 删除一个文档时,从视图的 Firestore 集合中删除了多个文档
- python - Pymongo:如何检查字段是否存在
- ruby-on-rails - 为什么安装包后 gem 没有出现在本地 gem 中?
- python - Python - 在函数外部创建的对象在内部完全可访问?