Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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, bin
wie 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 PATH
haben.
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.exe
msys-2.0.dll
cygwin1.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