Auf Englisch lesen

Freigeben über


Mingw-w64

Hinweis

MinGW wird im Rahmen des CI-Prozesses des vcpkg-Repositorys nicht getestet, sodass Regressionen als Teil von Bibliotheksupdates auftreten können. PRs, die den Support verbessern, sind willkommen!

Mingw-w64 Community-Triplets

vcpkg umfasst x64, x86, arm64 und arm Community Triplets für Mingw-w64. Sie sind nicht von Visual Studio abhängig und können nativ unter Windows sowie für die Kompilierung auf anderen Betriebssystemen verwendet werden. Es gibt zwei Varianten jedes Triplets, wobei zwischen statischer und dynamischer Verknüpfung ausgewählt wird. Die tatsächlichen Tools (g++ usw.) werden voraussichtlich mit bestimmten Präfixen benannt.

Aufbau vcpkg Community-Triplets Präfix des Toolnamens
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-

Diese Triplets werden nicht durch kontinuierliche Integration getestet, sodass viele Ports nicht erstellt werden, und sogar vorhandene Ports können bei Portupdates unterbrechen. Aus diesem Grund ist das Engagement der Gemeinschaft von größter Bedeutung!

Native Verwendung von Mingw-w64 unter Windows

Mit MSYS2 können Sie problemlos eine vollständige Umgebung zum Erstellen von Ports mit Mingw-w64 auf einem Windows-PC erstellen.

Beim Erstellen von Software für systemeigene Windows-Umgebungen müssen Sie ein Mingw-Subsystem von MSYS2 verwenden und einige Pakete (mit einem bestimmten Präfix) für dieses Subsystem installieren.

Architektur vcpkg-Dreifache subsystem Paketpräfix
x64 x64-mingw-dynamic, x64-mingw-static mingw64 mingw-w64-x86_64-
x86 x86-mingw-dynamic, x86-mingw-static mingw32 mingw-w64-i686-

Nach der Basisinstallation von MSYS2 müssen Sie einige zusätzliche Pakete für die Softwareentwicklung installieren, z. B. für x64:

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

Das aktive Subsystem wird ausgewählt, indem die MSYS2 MinGW-App ausgeführt oder in einem ausgeführten Terminal geändert wird.

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

Die Bootstrapping von vcpkg muss durch Ausführen von Bootstrap-vcpkg.bat erfolgen. Dieser Befehl lädt den offiziellen vcpkg.exe herunter.

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

Zum Erstellen von Paketen müssen Sie vcpkg mitteilen, dass Sie das Mingw-Triplet verwenden möchten. Dies kann auf unterschiedliche Weise erfolgen. Wenn Visual Studio nicht installiert ist, müssen Sie auch das Host-Triplet auf mingw festlegen. Dies ist erforderlich, um Hostabhängigkeiten aufzulösen. Zur Vereinfachung können Sie Umgebungsvariablen verwenden, um beide Triplets festzulegen:

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

Jetzt können Sie Ihr Setup testen:

./vcpkg install zlib

So vermeiden Sie das Mischen verschiedener Installationen

Das MSYS2-Projekt warnt ausdrücklich, dass "Das Mischen von Programmen aus anderen MSYS2-Installationen, Cygwin-Installationen, Compiler-Toolketten oder sogar verschiedenen anderen Programmen nicht unterstützt wird und die Dinge wahrscheinlich unerwartet unterbrechen wird." Die ordnungsgemäße Übergabe von Befehlszeilenargumenten mit An- und Escapezeichen kann z. B. fehlschlagen.

Vcpkg-Ports erstellen jedoch implizit MSYS2-Installationen, z. B. für pkg-config und für verschiedene andere Buildtools, die für die Behandlung von Paketen auf der Grundlage von Autoconf erforderlich sind. Wenn ports vor der Umgebungsvariablen PATH das Verzeichnis der Tools vorangestellt haben, kann dies ändern, welches Tool mit einem bestimmten Namen tatsächlich aufgerufen wird und wie Argumente zwischen Tools übergeben werden.

Um solche Probleme beim Arbeiten mit einer vollständigen MSYS2-Installation zu beheben, versuchen Sie, die Verzeichnisse des msys-Subsystems (/usr/bin, ) aus der PATH Umgebungsvariablen zu behalten, binwie von vcpkg gefunden. In Bash können Sie den PATH just für einen einzelnen Aufruf von vcpkg ändern:

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

Alternativ können Sie vcpkg über eine normale Eingabeaufforderung ausführen, nachdem Sie nur das gewünschte Mingw-Verzeichnis (z. B. C:\msys64\mingw64\bin) zum Verzeichnis hinzugefügt PATHhaben.

Wenn Sie vcpkg für CI mit Standardimages in Azure-Pipelines, Github-Aktionen oder ähnlich verwenden, enthält die Standardeinstellung PATH möglicherweise weitere Verzeichnisse, die eine Mischung aus MSYS2-Programmen aus verschiedenen Installationen erstellen. Möglicherweise möchten Sie die gewünschten PATH Verzeichnisse manuell festlegen oder Verzeichnisse entfernen, die sh.exe, oder bash.exemsys-2.0.dllcygwin1.dll.

Verwenden von Mingw-w64 zum Erstellen von Windows-Programmen auf anderen Systemen

Sie können die vcpkg mingw Community-Triplets mit Toolketten auf Nicht-Windows-Computern verwenden, um softwareübergreifend zu kompilieren, um unter Windows ausgeführt werden zu können. Viele Linux-Distributionen bieten solche Toolketten in optionalen Paketen mit einem Mingw-w64-Suffix oder Präfix an. Als Beispiel für Debian-basierte Distributionen würden Sie mit diesem Installationsbefehl für die x64-Toolkette beginnen:

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

Die verpackten Versionen von Mingw-w64-Toolketten auf Linux-Distributionen können ältere Versionen sein, die einige nützliche Features oder Fehlerbehebungen fehlen. Eine alternative unabhängige Toolkette wird von MXE angeboten.

Klonen Sie für das vcpkg-Bootstrapping das GitHub-Repository, und führen Sie das bootstrap-vcpkg.sh Skript aus:

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