使用低版本vcpkg时,bootstrap-vcpkg.bat无法生成vcpkg.exe的可能原因

缘由

需要使用vcpkg中低版本的第三方库,下载vcpkg后,回退至指定版本,运行bootstrap-vcpkg.bat生成vcpkg.exe时,命令行窗口总是一闪而过,但是vcpkg.exe却没有生成。

添加pause,查看错误

编辑bootstrap-vcpkg.bat,在末尾添加pause,使之暂停,显示错误

问题1:网络问题

下载失败,多尝试几遍或者使用其他魔法

问题2:编译失败

在这里插入图片描述
继续查看bootstrap-vcpkg.bat

@echo off
powershell.exe -NoProfile -ExecutionPolicy Bypass "& {& '%~dp0scripts\bootstrap.ps1'}"
pause

打开scripts\bootstrap.ps1查看,调试并分析,MSBuild.exe目录可能与以下代码有关

$msbuildExeWithPlatformToolset = & $scriptsDir\findAnyMSBuildWithCppPlatformToolset.ps1 $withVSPath
$msbuildExe = $msbuildExeWithPlatformToolset[0]
$platformToolset = $msbuildExeWithPlatformToolset[1]
$windowsSDK = & $scriptsDir\getWindowsSDK.ps1

继续打开findAnyMSBuildWithCppPlatformToolset.ps1

[CmdletBinding()]
param([Parameter(Mandatory=$False)][string]$withVSPath = ""
)Set-StrictMode -Version Latest
$scriptsDir = split-path -parent $script:MyInvocation.MyCommand.Definition$withVSPath = $withVSPath -replace "\\$" # Remove potential trailing backslash$VisualStudioInstallationInstances = & $scriptsDir\findVisualStudioInstallationInstances.ps1
if ($VisualStudioInstallationInstances -eq $null)
{throw "Could not find Visual Studio. VS2015 or VS2017 (with C++) needs to be installed."
}Write-Verbose "VS Candidates:`n`r$([system.String]::Join([Environment]::NewLine, $VisualStudioInstallationInstances))"
foreach ($instanceCandidateWithEOL in $VisualStudioInstallationInstances)
{$instanceCandidate = $instanceCandidateWithEOL -replace "<sol>::" -replace "::<eol>"Write-Verbose "Inspecting: $instanceCandidate"$split = $instanceCandidate -split "::"# $preferenceWeight = $split[0]# $releaseType = $split[1]$version = $split[2]$path = $split[3]if ($withVSPath -ne "" -and $withVSPath -ne $path){Write-Verbose "Skipping: $instanceCandidate"continue}$majorVersion = $version.Substring(0,2);if ($majorVersion -eq "15"){$VCFolder= "$path\VC\Tools\MSVC\"if (Test-Path $VCFolder){Write-Verbose "Picking: $instanceCandidate"return "$path\MSBuild\15.0\Bin\MSBuild.exe", "v141"}}if ($majorVersion -eq "14"){$clExe= "$path\VC\bin\cl.exe"if (Test-Path $clExe){Write-Verbose "Picking: $instanceCandidate"$programFilesPath = & $scriptsDir\getProgramFiles32bit.ps1return "$programFilesPath\MSBuild\14.0\Bin\MSBuild.exe", "v140"}}
}throw "Could not find MSBuild version with C++ support. VS2015 or VS2017 (with C++) needs to be installed."

可以看到由于版本较旧,只支持了VS2015 和 VS2017,但是我的机子安装的是VS2022,所以导致了MSBuild.exe目录查找失败

尝试修改返回值

修改成自己机子上的VS安装目录

[CmdletBinding()]
param([Parameter(Mandatory=$False)][string]$withVSPath = ""
)return "D:\CodingTools\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe", "v143"以下省略...

运行,编译失败,可能是编译器太新,使用的C++版本不兼容,继续修改
这里我修改成了2017的编译器版本,如果没有安装2015或者2017,可能需要在已安装的机子上运行后拷贝过来,或者修改VS,安装对应的编译器

return "D:\CodingTools\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe", "v141"

在这里插入图片描述
编译成功,成功生成vcpkg.exe

注意

这个方法只试用与刚clone的vcpkg,如果克隆后有安装过第三方库,再使用改方法,可能会导致vcpkg报错,版本不兼容

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/40834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker的网络模式

docker0网络 docker容器的 虚拟网关loopback &#xff1a;回环网卡、TCP/IP网卡是否生效virtual bridge&#xff1a;linux 自身继承了一个虚拟化功能&#xff08;kvm架构&#xff09;&#xff0c;是原生架构的一个虚拟化平台&#xff0c;安装了一个虚拟化平台之后就会系统就会自…

ftp设置空闲连接超时时间和数据连接超时时间

在FTP协议中&#xff0c;可以通过配置服务器端的空闲连接超时时间来设置连接的过期时间。具体步骤如下&#xff1a; 登录FTP服务器&#xff0c;进入服务器的配置文件目录。通常配置文件位于/etc或/etc/vsftpd目录下。打开FTP服务器的配置文件&#xff0c;例如vsftpd.conf。在配…

区间预测 | MATLAB实现QRBiLSTM双向长短期记忆神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRBiLSTM双向长短期记忆神经网络分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRBiLSTM双向长短期记忆神经网络分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 区间预测 | MATLAB实现QRBiLSTM双向长短…

Codeforces 461B 树形 DP

题意 传送门 Codeforces 461B Appleman and Tree 题解 d p v , k dp_{v,k} dpv,k​ 代表以节点 v v v 为根的子树中&#xff0c;包含了 v v v 的联通分量是否存在一个黑色节点 &#xff0c;同时其余联通分量仅包含一个黑色节点情况下&#xff0c;划分方案的数量。DFS 求解&…

微服务观测性提升专项梳理

文章目录 项目背景&#xff1a;项目目标&#xff1a;专项人员关键问题及风险APM 进展 项目背景&#xff1a; 随着微服务架构的普及&#xff0c;构建和管理大规模的分布式系统变得越来越复杂。为了确保这些系统的可靠性和性能&#xff0c;以及快速排除故障&#xff0c;对微服务…

Git 合并分支时允许合并不相关的历史

git fetch git fetch 是 Git 的一个命令&#xff0c;用于从远程仓库中获取最新的提交和数据&#xff0c;同时更新本地仓库的远程分支指针。 使用 git fetch 命令可以获取远程仓库的最新提交&#xff0c;但并不会自动合并或修改本地分支。它会将远程仓库的提交和引用&#xff…

Linux如何查看文件进程占用-lsof

lsof命令是什么&#xff1f; 可以列出被进程所打开的文件的信息。被打开的文件可以是 1.普通的文件&#xff0c;2.目录 3.网络文件系统的文件&#xff0c;4.字符设备文件 5.(函数)共享库 6.管道&#xff0c;命名管道 7.符号链接 8.底层的socket字流&#xff0c;网络socket…

Rust语法: 枚举,泛型,trait

这是我学习Rust的笔记&#xff0c;本文适合于有一定高级语言基础的开发者看不适合刚入门编程的人&#xff0c;对于一些概念像枚举&#xff0c;泛型等&#xff0c;不会再做解释&#xff0c;只写在Rust中怎么用。 文章目录 枚举枚举的定义与赋值枚举绑定方法和函数match匹配枚举…

代码随想录算法训练营二刷第一天| 704. 二分查找,27. 移除元素

代码随想录算法训练营二刷第一天| 704. 二分查找&#xff0c;27. 移除元素 文章目录 代码随想录算法训练营二刷第一天| 704. 二分查找&#xff0c;27. 移除元素一、704. 二分查找二、35.搜索插入位置三、34. 在排序数组中查找元素的第一个和最后一个位置四、69.x 的平方根五、3…

【回溯】总结

1、 组合和子集问题 组合问题需要满足一定要求才算作一个答案&#xff0c;比如数量要求&#xff08;k个数&#xff09;&#xff0c;累加和要求&#xff08;target&#xff09;。 子集问题是只要构成一个新的子集就算作一个答案。 进阶&#xff1a;去重逻辑。 一般都是要对同…

Linux 5种网络IO模型

Linux IO模型 网络IO的本质是socket的读取&#xff0c;socket在linux系统被抽象为流&#xff0c;IO可以理解为对流的操作。刚才说了&#xff0c;对于一次IO访问&#xff08;以read举例&#xff09;&#xff0c;数据会先被拷贝到操作系统内核的缓冲区中&#xff0c;然后才会从操…

LL库实现SPI MDA发送方式驱动WS2812

1&#xff0c;首先打卡STM32CubeMX&#xff0c;配置一下工程&#xff0c;这里使用的芯片是STM32F030F4P6。 时钟 SPI外设 SPI DMA 下载接口&#xff0c;这个不配置待会下程序后第二次就不好下载调试了。 工程配置&#xff0c;没啥说的 选择生成所有文件 将驱动都改为LL库 然后直…

OpenCV之特征点匹配

特征点选取 特征点探测方法有goodFeaturesToTrack(),cornerHarris()和SURF()。一般使用goodFeaturesToTrack()就能获得很好的特征点。goodFeaturesToTrack()定义&#xff1a; void goodFeaturesToTrack( InputArray image, OutputArray corners,int maxCorners, double qualit…

jmeter errstr :“unsupported field type for multipart.FileHeader“

在使用jmeter测试接口的时候&#xff0c;提示errstr :"unsupported field type for multipart.FileHeader"如图所示 这是因为我们 在HTTP信息头管理加content-type参数有问题 直接在HTTP请求中&#xff0c;勾选&#xff1a; use multipart/form-data for POST【中文…

22、touchGFX学习Model-View-Presenter设计模式

touchGFX采用MVP架构&#xff0c;如下所示&#xff1a; 本文界面如下所示&#xff1a; 本文将实现两个操作&#xff1a; 1、触摸屏点击开关按键实现打印开关显示信息&#xff0c;模拟开关灯效果 2、板载案按键控制触摸屏LED灯的显示和隐藏 一、触摸屏点击开关按键实现打印开…

Go语言之依赖管理

go module go module是Go1.11版本之后官方推出的版本管理工具&#xff0c;并且从Go1.13版本开始&#xff0c;go module将是Go语言默认的依赖管理工具。 GO111MODULE 要启用go module支持首先要设置环境变量GO111MODULE 通过它可以开启或关闭模块支持&#xff0c;它有三个可选…

docker搭建LNMP

docker安装 略 下载镜像 nginx:最新版php-fpm:根据自己需求而定mysql:根据自己需求定 以下是我搭建LNMP使用的镜像版本 rootVM-12-16-ubuntu:/docker/lnmp/php/etc# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 8.0…

Linux的基本权限(文件,目录)

文章目录 前言一、Linux权限的概念二、Linux权限管理 1.文件访问者分类2.文件类型和访问类型3.文件访问权限的相关设置方法三、目录的权限四、权限的总结 前言 Linux下一切皆文件&#xff0c;指令的本质就是可执行文件&#xff0c;直接安装到了系统的某种路径下 一、Linux权限的…

embed mongodb 集成spring

在property文件下添加 de.flapdoodle.mongodb.embedded.version5.0.5 spring.mongodb.embedded.storage.oplog-size0不指定数据库&#xff0c;会使用test&#xff0c; port默认是0&#xff0c;随机端口号。 oplog-size mac默认是192mb, 其他系统会使用5%的磁盘可用空间&#x…