Mingw-w64
- [アーティクル]
-
-
注意
MinGW は vcpkg リポジトリの CI プロセスの一部としてテストされないため、回帰はライブラリの更新の一部として発生する可能性があります。 サポートを向上させる PR を歓迎します。
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.dll
sh.exe
bash.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