閱讀英文

共用方式為


Mingw-w64

注意

MinGW 不會作為 vcpkg 存放庫 CI 程式的一部分進行測試,因此在程式庫更新過程中可能會發生回歸。 可歡迎改善支援的 PR!

明文-w64 社區三胞胎

vcpkg 包含 適用于 Mingw-w64 的 x64、x86、arm64 和 arm 社群三胞胎 。 它們不相依于 Visual Studio,而且可在 Windows 上原生使用,以及在其他作業系統上進行交叉編譯。 每個三元組有兩個變體,在靜態和動態連結之間選取。 實際的工具 (g++ 等) 應該以特定前置詞命名。

架構 vcpkg community triplets 工具名稱前置詞
x64 x64-mingw-dynamic, x64-mingw-static x86_64-w64-mingw32-
x86 x86-mingw-dynamic, x86-mingw-static i686-w64-mingw32-
arm64 arm64-mingw-dynamic, arm64-mingw-static aarch64-w64-mingw32-
arm arm-mingw-dynamic, arm-mingw-static armv7-w64-mingw32-

這些三胞胎不會經過持續整合測試,因此許多埠不會建置,甚至現有的埠可能會在埠更新時中斷。 因此,社群參與至關重要!

在 Windows 上原生使用 Mingw-w64

透過 MSYS2 ,您可以輕鬆地建立完整的環境,以在 Windows 電腦上使用 Mingw-w64 建置埠。

為原生 Windows 環境建置軟體時,您必須使用 MSYS2 的 mingw 子系統,並為此子系統安裝一些套件(具有特定前置詞)。

架構 vcpkg triplets 子系統 套件前置詞
x64 x64-mingw-dynamic, x64-mingw-static mingw64 mingw-w64-x86_64-
x86 x86-mingw-dynamic, x86-mingw-static mingw32 mingw-w64-i686-

在 MSYS2 的基本安裝之後,您必須安裝一些額外的套件以進行軟體發展,例如 x64:

pacman -S --needed git base-devel mingw-w64-x86_64-toolchain

執行 MSYS2 MinGW 應用程式,或在執行中的終端機中變更,以選取使用中的子系統

source shell mingw64   # for x64, or "mingw32" for x86

vcpkg 的啟動執行應該執行 bootstrap-vcpkg.bat 來完成。 此命令會下載官方 vcpkg.exe。

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat

若要建置套件,您必須告訴 vcpkg 您想要使用 mingw triplet。 這可以透過不同的方式來完成。 未安裝 Visual Studio 時,您也必須將主機三重設定為 mingw。 這是解析主機相依性所需的。 為了方便起見,您可以使用環境變數來設定這兩個三胞胎:

export VCPKG_DEFAULT_TRIPLET=x64-mingw-dynamic
export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-dynamic

現在您可以測試您的設定:

./vcpkg install zlib

如何避免混合不同的安裝

MSYS2 專案明確警告 :「與其他 MSYS2 安裝、Cygwin 安裝、編譯器工具鏈或甚至各種其他程式混合在一起,可能會以非預期的方式中斷。例如,使用引號和逸出的適當命令列引數傳遞可能會失敗。

但 vcpkg 埠會隱含地建立 MSYS2 安裝,例如 , pkg-config 以及針對根據 autoconf 處理套件所需的各種其他建置工具。 特別是,當埠在工具 PATH 目錄前面加上環境變數時,這可能會變更實際叫用具有特定名稱的工具,以及在工具之間傳遞引數的方式。

若要在處理完整的 MSYS2 安裝時減輕這類問題,請嘗試將 msys 子系統的目錄 ( /usr/binbin ) 從 vcpkg 找到的 PATH 環境變數中保留出來。 在 bash 中,您可以針對 vcpkg 的單一呼叫修改 PATH just:

PATH="${PATH/:\/usr\/bin:\/bin:/:}" ./vcpkg install libpq

或者,您可以將所需的 mingw 目錄 (例如 C:\msys64\mingw64\bin ) 新增 PATH 之後,從一般命令提示字元執行 vcpkg。

針對 CI 使用 vcpkg 搭配 Azure Pipelines、Github Actions 或類似映射時,預設值 PATH 可能包含更多目錄,這些目錄會從不同的安裝建立 MSYS2 程式的混合。 您可以手動設定所需的 PATH 目錄,或移除包含 sh.exebash.exemsys-2.0.dllcygwin1.dll 的目錄。

使用 Mingw-w64 在其他系統上建置 Windows 程式

您可以使用 vcpkg mingw 社群三胞胎搭配非 Windows 電腦上的工具鏈,跨編譯軟體在 Windows 上執行。 許多 Linux 散發套件在具有 mingw-w64 尾碼或 前置 詞 的選用套件中提供這類工具鏈。 例如,針對 Debian 型散發套件,您會從 x64 工具鏈的這個安裝命令開始:

sudo apt-get install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64

Linux 發行版本上 Mingw-w64 工具鏈的封裝版本可能是較舊的版本,缺少一些有用的功能或 Bug 修正。 MXE 提供 替代的獨立工具鏈。

針對 vcpkg 啟動載入,請複製 github 存放庫並執行 bootstrap-vcpkg.sh 腳本:

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg install zlib:x64-mingw-dynamic