Mingw-w64
注意
MinGW 不會作為 vcpkg 存放庫 CI 程式的一部分進行測試,因此在程式庫更新過程中可能會發生回歸。 可歡迎改善支援的 PR!
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/bin
, bin
) 從 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.exe
、 bash.exe
msys-2.0.dll
或 cygwin1.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