使用低版本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.pswp.cn/news/40834.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40834.shtml
英文地址,請注明出處:http://en.pswp.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…