İngilizce dilinde oku

Aracılığıyla paylaş


Mingw-w64

Not

MinGW, vcpkg deposunun CI işleminin bir parçası olarak test edilmediğinden, kitaplık güncelleştirmelerinin bir parçası olarak regresyonlar oluşabilir. Desteği geliştiren PR'ler kabul edilir!

Mingw-w64 topluluk üçlüleri

vcpkg, Mingw-w64 için x64, x86, arm64 ve arm topluluk üçlülerini içerir. Visual Studio'ya bağımlı değildir ve Windows'da yerel olarak ve diğer işletim sistemlerinde çapraz derleme için kullanılabilir. Statik ve dinamik bağlama arasında seçim yaparak her üçlüden iki farklı değişken vardır. Gerçek araçların (g++ vb.) belirli ön eklerle adlandırılması beklenir.

Mimari vcpkg topluluk üçlüleri Araç adı ön eki
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-
Kol arm-mingw-dynamic, arm-mingw-static armv7-w64-mingw32-

Bu üçlüler sürekli tümleştirme tarafından test edilmediğinden, birçok bağlantı noktası derlenmez ve mevcut bağlantı noktaları bile bağlantı noktası güncelleştirmelerinde bozulabilir. Bu nedenle, topluluk katılımı çok önemlidir!

Windows'da Mingw-w64'u yerel olarak kullanma

MSYS2 ile, Windows bilgisayarda Mingw-w64 ile bağlantı noktaları oluşturmak için kolayca tam bir ortam oluşturmak mümkündür.

Yerel Windows ortamları için yazılım oluştururken, MSYS2'nin bir mingw alt sistemini kullanmanız ve bu alt sistem için bazı paketler (belirli bir ön ek ile) yüklemeniz gerekir.

architecture vcpkg üçlüleri Alt paket ön eki
x64 x64-mingw-dynamic, x64-mingw-static mingw64 mingw-w64-x86_64-
x86 x86-mingw-dynamic, x86-mingw-static mingw32 mingw-w64-i686-

MSYS2'nin temel yüklemesinin ardından, yazılım geliştirme için birkaç ek paket yüklemeniz gerekir; örneğin, x64:

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

Etkin alt sistem, MSYS2 MinGW uygulaması çalıştırılarak seçilir veya çalışan bir terminalde

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

vcpkg bootstrapping bootstrap-vcpkg.bat çalıştırılarak yapılmalıdır. Bu komut resmi vcpkg.exe dosyasını indirir.

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

Paketleri derlemek için vcpkg'ye mingw üçlüslerini kullanmak istediğinizi söylemeniz gerekir. Bu farklı şekillerde yapılabilir. Visual Studio yüklü olmadığında, konak üçlüs değerini de mingw olarak ayarlamanız gerekir. Konak bağımlılıklarını çözmek için bu gereklidir. Kolaylık sağlamak için ortam değişkenlerini kullanarak her iki üçlüleri de ayarlayabilirsiniz:

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

Artık kurulumunuzu test edebilirsiniz:

./vcpkg install zlib

Farklı yüklemelerin karıştırılmasını önleme

MSYS2 projesi, "diğer MSYS2 yüklemelerinden , Cygwin yüklemelerinden, derleyici araç zincirlerinden ve hatta diğer çeşitli programlardan gelen programlarda karıştırmanın desteklenmediği ve muhtemelen beklenmedik yollarla işleri bozacağı" konusunda açıkça uyarır. Örneğin, komut satırı bağımsız değişkenlerinin alıntı ve kaçış ile doğru şekilde geçirilmesi başarısız olabilir.

Ancak vcpkg bağlantı noktaları msys2 yüklemelerini örtük olarak oluşturur; örneğin, otomatik kapsayıcıyı temel alan paketlerle başa çıkmak için gereken diğer çeşitli derleme araçları için pkg-config ve için. Özellikle, bağlantı noktaları araçların dizininden ortam değişkenine PATH eklendiğinde, bu, belirli bir ada sahip olan aracın gerçekte çağrıldığını ve bağımsız değişkenlerin araçlar arasında nasıl geçirildiğini değiştirebilir.

Tam MSYS2 yüklemesi ile çalışırken bu tür sorunları azaltmak için, msys alt sisteminin (/usr/bin, bin) dizinlerini vcpkg tarafından bulunan ortam değişkeninin PATH dışında tutmaya çalışın. Bash'te yalnızca tek bir vcpkg çağrısı için değiştirebilirsiniz PATH :

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

Alternatif olarak, öğesine yalnızca istenen mingw dizinini (örn. C:\msys64\mingw64\bin) PATHekledikten sonra normal bir Komut İsteminden vcpkg çalıştırabilirsiniz.

Azure Pipelines, Github Actions veya benzeri standart görüntülerle CI için vcpkg kullanırken, varsayılan değer PATH farklı yüklemelerden MSYS2 programlarının bir karışımını oluşturan daha fazla dizin içerebilir. İstediğinizi PATH el ile ayarlamak veya , bash.exemsys-2.0.dllcygwin1.dllveya içeren sh.exedizinleri kaldırmak isteyebilirsiniz.

Diğer sistemlerde Windows programları oluşturmak için Mingw-w64 kullanma

Windows'da çalıştırılacak yazılımları çapraz derlemek için vcpkg mingw topluluk üçlülerini Windows olmayan bilgisayarlardaki araç zincirleriyle kullanabilirsiniz. Birçok Linux dağıtımı, mingw-w64 soneki veya ön eki olan isteğe bağlı paketlerde bu tür araç zincirleri sunar. Örneğin, Debian tabanlı dağıtımlar için x64 araç zinciri için şu yükleme komutuyla başlarsınız:

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

Linux dağıtımlarında Mingw-w64 araç zincirlerinin paketlenmiş sürümleri, bazı yararlı özellikler veya hata düzeltmeleri olmayan eski sürümler olabilir. MXE tarafından alternatif bir bağımsız araç zinciri sunulur.

vcpkg bootstrapping için github deposunu kopyalayın ve betiği çalıştırın bootstrap-vcpkg.sh :

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