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 !
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 !
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
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.exe
msys-2.0.dll
ou cygwin1.dll
.
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
Commentaires sur vcpkg
vcpkg est un projet open source. Sélectionnez un lien pour fournir des commentaires :