Maison  >  Article  >  développement back-end  >  Comment exclure les fichiers source Go en fonction de l'architecture cible ?

Comment exclure les fichiers source Go en fonction de l'architecture cible ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-04 01:42:01962parcourir

How to Exclude Go Source Files Based on Target Architecture?

Exclure les fichiers sources Go par architecture lors de la compilation

Dans Go, il est parfois nécessaire d'exclure certains fichiers sources lors de la compilation en fonction de l'architecture cible. Par exemple, lors du développement d'un programme pour Windows qui utilise CGo pour interagir avec des fonctions natives, la compilation sous Linux peut entraîner des problèmes de dépendance, tels que des fichiers d'en-tête manquants.

Pour résoudre ce problème, Go utilise des contraintes de construction, qui permettent aux développeurs de spécifier les conditions dans lesquelles un fichier doit être inclus dans le package. En tirant parti des contraintes de construction, vous pouvez exclure des fichiers sources spécifiques en fonction de l'architecture cible.

Spécification des contraintes dépendantes de l'architecture :

Pour exclure une architecture particulière de la compilation, utilisez la syntaxe suivante :

// +build !<architecture>

Par exemple, pour exclure l'architecture x86 64 bits :

// +build !amd64

Vous pouvez également spécifier plusieurs architectures à exclure à l'aide de virgules :

// +build !amd64,!arm64

Utilisation de contraintes hiérarchiques :

Avec des conditions complexes, vous pouvez utiliser des contraintes hiérarchiques :

// +build linux
// +build amd64

// +build solaris
// +build 386,!go1.12

Cette hiérarchie démontre que pour le premier ensemble de contraintes, Linux et amd64 doivent être satisfaits, tandis que dans le deuxième ensemble, Solaris est requis et la version 386 ou Go antérieure à 1.12 peut être satisfaite.

Exclusion par nom de fichier :

En plus des contraintes de construction, vous pouvez exclure des fichiers en fonction de leurs conventions de dénomination :

  • Les fichiers nommés *_GOOS sont exclus lors de la construction pour un système d'exploitation différent.
  • Fichiers nommés *_GOARCH sont exclus lors de la construction pour une architecture différente.
  • Les fichiers nommés *_GOOS_GOARCH sont exclus lors de la construction pour une combinaison de système d'exploitation et d'architecture différente.

Exemple :

Pour exclure un fichier source nommé windows.c lors de la construction sous Linux, insérez la contrainte de construction suivante en haut du fichier :

// +build ignore

Vous pouvez également renommer le fichier en windows_windows.c .

En utilisant les contraintes de construction et les conventions de dénomination des fichiers, vous pouvez exclure efficacement des fichiers sources spécifiques en fonction de l'architecture cible lors de la compilation des programmes Go, permettant ainsi des versions personnalisées pour différents environnements.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn