Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Mingw-w64

Uwaga

Usługa MinGW nie jest testowana w ramach procesu ciągłej integracji repozytorium vcpkg, więc regresje mogą wystąpić w ramach aktualizacji biblioteki. Żądania ściągnięcia poprawiające wsparcie są mile widziane!

Mingw-w64 community triplets

vcpkg obejmuje x64, x86, arm64 i arm community triplets dla Mingw-w64. Nie zależą one od programu Visual Studio i mogą być używane natywnie w systemie Windows, a także do kompilowania krzyżowego w innych systemach operacyjnych. Istnieją dwa warianty każdej trójki, wybierając między łączeniem statycznym i dynamicznym. Oczekuje się, że rzeczywiste narzędzia (g++ itp.) będą nazwane z określonymi prefiksami.

Architektura trojaczki społeczności vcpkg Prefiks nazwy narzędzia
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-
Ramię arm-mingw-dynamic, arm-mingw-static armv7-w64-mingw32-

Te trojaczki nie są testowane przez ciągłą integrację, więc wiele portów nie jest kompilowanych, a nawet istniejące porty mogą spowodować przerwanie aktualizacji portów. W związku z tym zaangażowanie społeczności jest najważniejsze!

Używanie Mingw-w64 natywnie w systemie Windows

Dzięki msYS2 można łatwo utworzyć pełne środowisko do kompilowania portów za pomocą Mingw-w64 na komputerze z systemem Windows.

Podczas tworzenia oprogramowania dla natywnych środowisk systemu Windows należy użyć podsystemu mingw MSYS2 i zainstalować niektóre pakiety (z określonym prefiksem) dla tego podsystemu.

architektura trojaczki vcpkg Podsystemu prefiks pakietu
x64 x64-mingw-dynamic, x64-mingw-static mingw64 mingw-w64-x86_64-
x86 x86-mingw-dynamic, x86-mingw-static mingw32 mingw-w64-i686-

Po podstawowej instalacji msYS2 należy zainstalować kilka dodatkowych pakietów na potrzeby tworzenia oprogramowania, na przykład dla środowiska x64:

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

Aktywny podsystem jest wybierany przez uruchomienie aplikacji MSYS2 MinGW lub zmienione w uruchomionym terminalu przez

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

Bootstrapping vcpkg należy wykonać przez uruchomienie bootstrap-vcpkg.bat. To polecenie pobierze oficjalny plik vcpkg.exe.

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

W przypadku pakietów konstrukcyjnych należy poinformować vcpkg, że chcesz użyć trypletu mingw. Można to zrobić na różne sposoby. Jeśli program Visual Studio nie jest zainstalowany, należy również ustawić potrójny hosta na mingw. Jest to konieczne do rozwiązania problemów z zależnościami hosta. Dla wygody możesz użyć zmiennych środowiskowych, aby ustawić obie trójki:

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

Teraz możesz przetestować konfigurację:

./vcpkg install zlib

Jak unikać mieszania różnych instalacji

Projekt MSYS2 wyraźnie ostrzega , że "mieszanie programów z innych instalacji MSYS2, instalacji Cygwin, łańcuchów narzędzi kompilatora, a nawet różnych innych programów nie jest obsługiwane i prawdopodobnie spowoduje przerwanie rzeczy w nieoczekiwany sposób." Na przykład prawidłowe przekazywanie argumentów wiersza polecenia z cudzysłowem i ucieczką może zakończyć się niepowodzeniem.

Jednak porty vcpkg niejawnie tworzą instalacje MSYS2, np. dla pkg-config i dla różnych innych narzędzi kompilacji potrzebnych do obsługi pakietów w oparciu o autokonf. W szczególności, gdy porty poprzedzają katalog narzędzi do PATH zmiennej środowiskowej, może to zmienić narzędzie o określonej nazwie i sposób przekazywania argumentów między narzędziami.

Aby rozwiązać takie problemy podczas pracy z pełną instalacją MSYS2, spróbuj zachować katalogi podsystemu msys (/usr/bin, bin) ze PATH zmiennej środowiskowej znalezionej przez program vcpkg. W powłoce bash można zmodyfikować PATH tylko dla pojedynczego wywołania programu vcpkg:

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

Alternatywnie możesz uruchomić narzędzie vcpkg z zwykłego wiersza polecenia, po dodaniu tylko żądanego katalogu mingw (np. C:\msys64\mingw64\bin) do .PATH

W przypadku korzystania z narzędzia vcpkg dla ciągłej integracji ze standardowymi obrazami w usłudze Azure Pipelines, funkcji Github Actions lub podobnych domyślnych PATH katalogów może zawierać więcej katalogów, które tworzą mieszankę programów MSYS2 z różnych instalacji. Możesz ustawić żądane PATH ręcznie lub usunąć katalogi zawierające sh.exebash.exe, lub msys-2.0.dllcygwin1.dll.

Używanie Mingw-w64 do kompilowania programów systemu Windows w innych systemach

Możesz użyć trypletów społeczności vcpkg mingw z łańcuchami narzędzi na komputerach innych niż Windows do krzyżowego kompilowania oprogramowania do uruchamiania w systemie Windows. Wiele dystrybucji systemu Linux oferuje takie łańcuchy narzędzi w opcjonalnych pakietach z sufiksem lub prefiksem mingw-w64. Na przykład w przypadku dystrybucji opartych na debianie należy zacząć od tego polecenia instalacji dla łańcucha narzędzi x64:

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

Spakowane wersje łańcuchów narzędzi Mingw-w64 w dystrybucjach systemu Linux mogą być starszymi wersjami, które nie mają niektórych przydatnych funkcji lub poprawek błędów. Alternatywny niezależny łańcuch narzędzi jest oferowany przez MXE.

W przypadku uruchamiania narzędzia vcpkg sklonuj repozytorium github i uruchom bootstrap-vcpkg.sh skrypt:

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