"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo crear varios archivos binarios del paquete Go simultáneamente sin una carpeta `cmd` de nivel superior?

¿Cómo crear varios archivos binarios del paquete Go simultáneamente sin una carpeta `cmd` de nivel superior?

Publicado el 2024-11-11
Navegar:554

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

Creación de varios binarios de paquetes Go simultáneamente

La pregunta gira en torno a la creación de varios binarios de paquetes Go simultáneamente, como consejo predeterminado para utilizar un nivel superior La carpeta cmd no parece funcionar. El ejemplo de código proporcionado muestra una estructura de carpetas particular que permite compilar archivos binarios específicos correctamente.

Para compilar todos los archivos binarios en un solo paso usando el comando go build, se recomienda una variación de lo siguiente:

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

Este comando itera a través de los paquetes en el directorio src/cmd y construye cada paquete individualmente. Los archivos binarios resultantes se almacenarán en sus respectivos directorios de paquetes.

Alternativamente, si no desea instalar los archivos binarios en $GOPATH/bin, puede emplear un script. Esta es una práctica común en proyectos de código abierto, donde los scripts de compilación manejan múltiples producciones binarias.

Se puede utilizar el siguiente script de ejemplo:

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

Este script recorre en iteración los paquetes en el directorio cmd y ejecuta go build en cada uno. El resultado es un conjunto de archivos binarios almacenados en sus respectivos directorios de paquetes cmd.

Para mayor referencia, los siguientes proyectos populares proporcionan ejemplos de scripts de compilación:

  • 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
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3