Mingw-w64
Nota
MinGW non viene testato come parte del processo di integrazione continua del repository vcpkg, quindi le regressioni possono verificarsi come parte degli aggiornamenti della libreria. Le richieste pull che migliorano il supporto sono benvenute!
vcpkg include triplette x64, x86, arm64 e arm community per Mingw-w64. Non dipendono da Visual Studio e possono essere usati in modo nativo in Windows e per la compilazione incrociata in altri sistemi operativi. Esistono due varianti di ogni tripletta, selezionando tra collegamento statico e dinamico. Gli strumenti effettivi (g++ e così via) devono essere denominati con prefissi specifici.
Architettura | tripli della community di vcpkg | Prefisso del nome dello strumento |
---|---|---|
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- |
Queste triplette non vengono testate dall'integrazione continua, quindi molte porte non vengono compilate e anche le porte esistenti potrebbero interrompersi sugli aggiornamenti delle porte. Per questo motivo, il coinvolgimento della comunità è fondamentale!
Con MSYS2, è possibile creare facilmente un ambiente completo per la compilazione di porte con Mingw-w64 in un PC Windows.
Quando si compila un software per ambienti Windows nativi, è necessario usare un sottosistema mingw di MSYS2 e installare alcuni pacchetti (con un prefisso specifico) per questo sottosistema.
architecture | triplet vcpkg | sottosistema | prefisso del pacchetto |
---|---|---|---|
x64 | x64-mingw-dynamic, x64-mingw-static | mingw64 | mingw-w64-x86_64- |
x86 | x86-mingw-dynamic, x86-mingw-static | mingw32 | mingw-w64-i686- |
Dopo l'installazione di base di MSYS2, sarà necessario installare alcuni pacchetti aggiuntivi per lo sviluppo di software, ad esempio per x64:
pacman -S --needed git base-devel mingw-w64-x86_64-toolchain
Il sottosistema attivo viene selezionato eseguendo l'app MinGW MSYS2 o modificata in un terminale in esecuzione
source shell mingw64 # for x64, or "mingw32" for x86
Il bootstrap di vcpkg deve essere eseguito eseguendo bootstrap-vcpkg.bat. Questo comando scaricherà il file vcpkg.exe ufficiale.
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.bat
Per la creazione di pacchetti, è necessario indicare a vcpkg che si vuole usare il tripletto mingw. Questa operazione può essere eseguita in modi diversi. Quando Visual Studio non è installato, è necessario impostare anche la tripletta host su mingw. Questa operazione è necessaria per risolvere le dipendenze dell'host. Per praticità, è possibile usare le variabili di ambiente per impostare entrambe le triplette:
export VCPKG_DEFAULT_TRIPLET=x64-mingw-dynamic
export VCPKG_DEFAULT_HOST_TRIPLET=x64-mingw-dynamic
A questo punto è possibile testare la configurazione:
./vcpkg install zlib
Il progetto MSYS2 avvisa esplicitamente che "la combinazione di programmi da altre installazioni MSYS2, installazioni Cygwin, toolchain del compilatore o anche vari altri programmi non è supportata e probabilmente interromperà le cose in modi imprevisti". Ad esempio, il passaggio corretto degli argomenti della riga di comando con virgolette ed escape potrebbe non riuscire.
Tuttavia, le porte vcpkg creano in modo implicito installazioni MSYS2, ad esempio per pkg-config
e per vari altri strumenti di compilazione necessari per gestire i pacchetti basati su autoconf. In particolare, quando le porte anteponono la directory degli strumenti alla PATH
variabile di ambiente, questo può modificare quale strumento con un nome specifico viene effettivamente richiamato e come gli argomenti vengono passati tra gli strumenti.
Per attenuare questi problemi quando si usa un'installazione MSYS2 completa, provare a mantenere le directory del sottosistema msys (/usr/bin
, bin
) fuori dalla PATH
variabile di ambiente rilevata da vcpkg. In bash è possibile modificare solo PATH
per una singola chiamata di vcpkg:
PATH="${PATH/:\/usr\/bin:\/bin:/:}" ./vcpkg install libpq
In alternativa, è possibile eseguire vcpkg da un normale prompt dei comandi, dopo aver aggiunto solo la directory mingw desiderata (ad esempio C:\msys64\mingw64\bin
) a PATH
.
Quando si usa vcpkg per CI con immagini standard in Azure Pipelines, Github Actions o simili, l'impostazione predefinita PATH
potrebbe contenere più directory che creano una combinazione di programmi MSYS2 da installazioni diverse. È possibile impostare manualmente o PATH
rimuovere le directory che contengono sh.exe
, bash.exe
msys-2.0.dll
o cygwin1.dll
.
È possibile usare i tripletti della community vcpkg mingw con toolchain nei computer non Windows per eseguire il software tra compilazioni per l'esecuzione in Windows. Molte distribuzioni linux offrono tali toolchain nei pacchetti facoltativi con un suffisso mingw-w64 o un prefisso. Ad esempio, per le distribuzioni basate su Debian, si inizierà con questo comando di installazione per la toolchain x64:
sudo apt-get install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64
Le versioni in pacchetto delle toolchain Mingw-w64 nelle distribuzioni Linux potrebbero essere versioni precedenti che non dispongono di alcune funzionalità utili o correzioni di bug. Una toolchain indipendente alternativa è offerta da MXE.
Per il bootstrap di vcpkg, clonare il repository github ed eseguire lo bootstrap-vcpkg.sh
script:
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg install zlib:x64-mingw-dynamic
Feedback su vcpkg
vcpkg è un progetto di open source. Selezionare un collegamento per fornire feedback: