"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como construir vários binários de pacotes Go simultaneamente sem uma pasta `cmd` de nível superior?

Como construir vários binários de pacotes Go simultaneamente sem uma pasta `cmd` de nível superior?

Publicado em 2024-11-11
Navegar:593

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

Construindo vários binários de pacotes Go simultaneamente

A questão gira em torno da construção de vários binários de pacotes simultaneamente, como o conselho padrão de usar um pacote de nível superior A pasta cmd parece não funcionar. O exemplo de código fornecido mostra uma estrutura de pasta específica que permite a construção correta de binários específicos.

Para construir todos os binários em uma única etapa usando o comando go build, é recomendada uma variação do seguinte:

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

Este comando itera pelos pacotes no diretório src/cmd e constrói cada pacote individualmente. Os binários resultantes serão armazenados em seus respectivos diretórios de pacotes.

Alternativamente, se você não deseja instalar os binários em $GOPATH/bin, um script pode ser empregado. Esta é uma prática comum em projetos de código aberto, onde scripts de construção lidam com produção binária múltipla.

O script de exemplo a seguir pode ser usado:

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

Este script percorre os pacotes no diretório cmd e executa go build em cada um. O resultado é um conjunto de binários armazenados em seus respectivos diretórios de pacotes cmd.

Para referência adicional, os seguintes projetos populares fornecem exemplos de scripts de construção:

  • Grafana: https:// github.com/grafana/grafana/blob/master/build.go
  • Toro: https://github.com/coreos/torus/blob/master/Makefile
  • Caddy: https://github.com/mholt/caddy/blob/master/dist/automate.go
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3