英語で読む

次の方法で共有


Mingw-w64

注意

MinGW は vcpkg リポジトリの CI プロセスの一部としてテストされないため、回帰はライブラリの更新の一部として発生する可能性があります。 サポートを向上させる PR を歓迎します。

Mingw-w64 コミュニティ トリプレット

vcpkg には、Mingw-w64 用の x64、x86、arm64、arm コミュニティ トリプレットが含まれています。 Visual Studio に依存せず、Windows 上でネイティブに使用できるほか、他のオペレーティング システムでのクロスコンパイルにも使用できます。 各トリプレットには、静的リンクと動的リンクの 2 つのバリエーションがあります。 実際のツール (g++ など) には、特定のプレフィックスを使用して名前を付ける必要があります。

Architecture vcpkg コミュニティ トリプレット ツール名のプレフィックス
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 PC で Mingw-w64 を使用してポートを構築するための完全な環境を簡単に作成できます。

ネイティブ・ウィンドウ環境用のソフトウェアをビルドする場合は、MSYS2 の mingw サブシステムを使用し、このサブシステム用にいくつかのパッケージ (特定のプレフィックス付き) をインストールする必要があります。

アーキテクチャ vcpkg triplets subsystem パッケージ プレフィックス
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

パッケージをビルドするには、mingw トリプレットを使用することを vcpkg に伝える必要があります。 これはさまざまな方法で実行できます。 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 インストールを使用する場合にこのような問題を軽減するには、vcpkg で見つかった環境変数から msys サブシステム (/usr/bin, bin) のディレクトリを PATH 保持するようにします。 bash では、vcpkg の PATH 1 回の呼び出しだけを変更できます。

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

または、必要な mingw ディレクトリ (例: C:\msys64\mingw64\bin) のみを追加した後、通常のコマンド プロンプトから vcpkg を実行することもできますPATH

Azure Pipelines、Github Actions などの標準イメージで CI 用 vcpkg を使用する場合、既定 PATH では、さまざまなインストールから MSYS2 プログラムを混在させるディレクトリが多く含まれる場合があります。 必要PATHに応じて手動で設定するか、または 、 を含む msys-2.0.dllsh.exebash.exeディレクトリを削除します。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 ツールチェーンのパッケージ バージョンは、いくつかの便利な機能やバグ修正がない古いリリースである可能性があります。 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