基本安装 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 三元。 这可以通过不同的方式完成。 如果未安装 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 的包所需的各种其他生成工具创建 MSYS2 安装。 具体而言,当端口将工具目录追加到 PATH
环境变量前时,这可能会更改实际调用具有特定名称的工具,以及如何在工具之间传递参数。
若要在处理完整的 MSYS2 安装时缓解此类问题,请尝试将 msys 子系统的目录保留 (/usr/bin
, bin
) vcpkg 找到的 PATH
环境变量之外。 在 bash 中,可以仅针对 vcpkg 的单个调用修改 PATH
:
PATH="${PATH/:\/usr\/bin:\/bin:/:}" ./vcpkg install libpq
或者,可以在 仅 添加所需的 mingw 目录 ((例如 C:\msys64\mingw64\bin
,) ) PATH
后,从常规命令提示符运行 vcpkg。
在 Azure Pipelines、Github Actions 或类似设备上将 vcpkg for CI 与标准映像一起使用时,默认值 PATH
可能包含更多目录,这些目录会从不同的安装创建混合 MSYS2 程序。 可能需要手动设置所需的 PATH
,或删除包含 sh.exe
、 bash.exe
msys-2.0.dll
或 cygwin1.dll
的目录。
使用 Mingw-w64 在其他系统上生成 Windows 程序
可以在非 Windows 计算机上将 vcpkg mingw 社区三胞胎与工具链配合使用,交叉编译要运行在 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