Lire en anglais

Partager via


Mingw-w64

Notes

MinGW n’est pas testé dans le cadre du processus CI du référentiel vcpkg. Les régressions peuvent donc se produire dans le cadre des mises à jour de bibliothèque. Les demandes de tirage améliorant le support sont bienvenues !

Triplets de la communauté Mingw-w64

vcpkg inclut des triplets de communauté x64, x86, arm64 et arm pour Mingw-w64. Ils ne dépendent pas de Visual Studio et peuvent être utilisés en mode natif sur Windows, ainsi que pour la compilation croisée sur d’autres systèmes d’exploitation. Il existe deux variantes de chaque triplet, en sélectionnant entre la liaison statique et dynamique. Les outils réels (g++, etc.) doivent être nommés avec des préfixes particuliers.

Architecture triplets de la communauté vcpkg Préfixe du nom de l’outil
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-

Ces triplets ne sont pas testés par l’intégration continue, tant de ports ne sont pas générés, et même les ports existants peuvent s’arrêter sur les mises à jour des ports. En raison de cela, l’implication communautaire est primordiale !

Utilisation de Mingw-w64 en mode natif sur Windows

Avec MSYS2, il est possible de créer facilement un environnement complet pour la création de ports avec Mingw-w64 sur un PC Windows.

Lors de la génération de logiciels pour les environnements Windows natifs, vous devez utiliser un sous-système mingw de MSYS2 et installer certains packages (avec un préfixe spécifique) pour ce sous-système.

architecture triplets vcpkg subsystem préfixe de package
x64 x64-mingw-dynamic, x64-mingw-static mingw64 mingw-w64-x86_64-
x86 x86-mingw-dynamic, x86-mingw-static mingw32 mingw-w64-i686-

Après l’installation de base de MSYS2, vous devez installer quelques packages supplémentaires pour le développement logiciel, par exemple pour x64 :

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

Le sous-système actif est sélectionné en exécutant l’application MinGW MSYS2 ou modifié dans un terminal en cours d’exécution par

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

Le démarrage de vcpkg doit être effectué en exécutant bootstrap-vcpkg.bat. Cette commande télécharge le fichier vcpkg.exe officiel.

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

Pour créer des packages, vous devez indiquer à vcpkg que vous souhaitez utiliser le triplet mingw. Cela peut être fait de différentes manières. Lorsque Visual Studio n’est pas installé, vous devez également définir le triplet de l’hôte sur mingw. Cela est nécessaire pour résoudre les dépendances de l’hôte. Pour plus de commodité, vous pouvez utiliser des variables d’environnement pour définir les deux triplets :

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

Vous pouvez maintenant tester votre configuration :

./vcpkg install zlib

Comment éviter de mélanger différentes installations

Le projet MSYS2 avertit explicitement que « le mélange de programmes à partir d’autres installations MSYS2, d’installations Cygwin, de chaînes d’outils du compilateur ou même de divers autres programmes n’est pas pris en charge et va probablement interrompre les choses de manière inattendue ». Par exemple, le passage approprié d’arguments de ligne de commande avec guillemets et échappement peut échouer.

Toutefois, les ports vcpkg créent implicitement des installations MSYS2, par exemple pour pkg-config et pour différents autres outils de génération nécessaires pour traiter les packages en fonction de la saisie automatique. En particulier, lorsque les ports précèdent le répertoire des outils à la PATH variable d’environnement, cela peut changer l’outil avec un nom particulier est réellement appelé et la façon dont les arguments sont passés entre les outils.

Pour atténuer ces problèmes lors de l’utilisation d’une installation complète de MSYS2, essayez de conserver les répertoires du sous-système msys (/usr/bin, bin) hors de la PATH variable d’environnement, comme indiqué par vcpkg. Dans bash, vous pouvez modifier le PATH juste pour un seul appel de vcpkg :

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

Vous pouvez également exécuter vcpkg à partir d’une invite de commandes régulière, après avoir ajouté uniquement le répertoire mingw souhaité (par exemple C:\msys64\mingw64\bin) au PATH.

Lorsque vous utilisez vcpkg pour CI avec des images standard sur Azure Pipelines, Github Actions ou similaires, la valeur par défaut PATH peut contenir davantage de répertoires qui créent un mélange de programmes MSYS2 à partir de différentes installations. Vous pouvez définir manuellement les répertoires souhaités PATH ou supprimer des répertoires qui contiennent sh.exe, bash.exemsys-2.0.dll ou cygwin1.dll.

Utilisation de Mingw-w64 pour générer des programmes Windows sur d’autres systèmes

Vous pouvez utiliser les triplets de la communauté vcpkg mingw avec des chaînes d’outils sur des ordinateurs non-Windows pour compiler plusieurs logiciels à exécuter sur Windows. De nombreuses distributions Linux offrent de telles chaînes d’outils dans des packages facultatifs avec un suffixe ou un préfixe mingw-w64. Par exemple, pour les distributions basées sur Debian, vous devez commencer par cette commande d’installation pour la chaîne d’outils x64 :

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

Les versions empaquetées des chaînes d’outils Mingw-w64 sur les distributions Linux peuvent être des versions antérieures qui n’ont pas de fonctionnalités utiles ou de correctifs de bogues. Une autre chaîne d’outils indépendante est proposée par MXE.

Pour le démarrage vcpkg, clonez le référentiel github et exécutez le bootstrap-vcpkg.sh script :

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