"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-11
Parcourir:110

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 d'utiliser un niveau supérieur 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 du répertoire cmd et s'exécute sur chacun d'eux. 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
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3