Maison  >  Article  >  développement back-end  >  Comment créer simultanément plusieurs binaires de packages Go sans dossier « cmd » de niveau supérieur ?

Comment créer simultanément plusieurs binaires de packages Go sans dossier « cmd » de niveau supérieur ?

DDD
DDDoriginal
2024-11-02 22:49:29638parcourir

How to Build Multiple Go Package Binaries Simultaneously Without a Top-Level `cmd` Folder?

Création simultanée de plusieurs binaires de packages Go

La question tourne autour de la création simultanée de plusieurs binaires de packages, comme conseil par défaut pour l'utilisation d'un Le dossier cmd ne semble pas fonctionner. L'exemple de code fourni montre une structure de dossiers particulière qui permet de créer correctement des binaires spécifiques.

Pour créer tous les binaires en une seule étape à l'aide de la commande go build, une variante de ce qui suit est recommandée :

cd $GOPATH/someProject
for CMD in `ls src/cmd`; do
  go build ./src/cmd/"$CMD"
done

Cette commande parcourt les packages dans le répertoire src/cmd et construit chaque package individuellement. Les binaires résultants seront stockés dans leurs répertoires de packages respectifs.

Alternativement, si vous ne souhaitez pas installer les binaires dans $GOPATH/bin, un script peut être utilisé. Il s'agit d'une pratique courante dans les projets open source, où les scripts de build gèrent plusieurs productions binaires.

L'exemple de script suivant peut être utilisé :

cd $GOPATH/someProject
for CMD in `ls cmd`; do
  go build ./cmd/$CMD
done

Ce script parcourt les packages dans la cmd répertoire et les exécutions vont s'appuyer sur chacun. Le résultat est un ensemble de binaires stockés dans leurs répertoires de packages cmd respectifs.

Pour référence ultérieure, les projets populaires suivants fournissent des exemples de scripts de construction :

  • Grafana : https:// github.com/grafana/grafana/blob/master/build.go
  • Torus : https://github.com/coreos/torus/blob/master/Makefile
  • Caddy : https : //github.com/mholt/caddy/blob/master/dist/automate.go

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