Problème :
Lors de la compilation d'un programme Go avec plusieurs packages , vous pouvez rencontrer des erreurs si certains packages contiennent des dépendances (par exemple, CGo) qui ne s'appliquent qu'à des architectures spécifiques. Dans de tels cas, vous souhaiterez peut-être exclure ces fichiers lors de la compilation pour les architectures non cibles.
Solution :
Les contraintes de construction dans Go fournissent un moyen d'inclure ou de conditionnellement exclure les fichiers sources en fonction de diverses conditions, y compris l'architecture cible. Voici comment les utiliser :
Ajouter une contrainte de construction aux fichiers :
En haut du fichier source que vous souhaitez exclure, ajoutez un ligne de commentaire commençant par // build. Suite à cette directive, précisez les conditions dans lesquelles le fichier doit être compilé. Par exemple, pour exclure un fichier pour toutes les architectures sauf Linux :
// +build !linux
Pour exclure un fichier pour toutes les architectures sauf 386 :
// +build !386
Pour exclure un fichier lorsque CGo est activé :
// +build !cgo
Utiliser la convention de dénomination des fichiers :
Vous pouvez également utiliser la convention de dénomination des fichiers pour spécifier les contraintes de construction. Par exemple, nommer un fichier package_linux.go entraînera son inclusion uniquement lors de la construction pour Linux.
Exemple :
Considérez ce qui suit structure de répertoire :
- main.go - linux.go - windows.go
Pour compiler le programme pour Linux, ajoutez la contrainte de build suivante à linux.go :
// +build linux
Pour compiler le programme pour Windows, ajoutez la build suivante contrainte à windows.go :
// +build windows
En utilisant des contraintes de construction, vous pouvez vous assurer que seul le code nécessaire est inclus lors de la compilation pour différentes architectures, résolvant ainsi le problème de la tentative de compilation de fichiers spécifiques à l'architecture sur des supports non -plateformes cibles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!