Maison >développement back-end >Golang >Pourquoi le conseil par défaut d'utilisation d'un dossier Cmd de niveau supérieur ne fonctionne-t-il pas pour créer plusieurs fichiers binaires ?

Pourquoi le conseil par défaut d'utilisation d'un dossier Cmd de niveau supérieur ne fonctionne-t-il pas pour créer plusieurs fichiers binaires ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-03 09:00:30421parcourir

Why Doesn't the Default Advice of Using a Top-Level Cmd Folder Work for Building Multiple Binaries?

Création de plusieurs binaires de packages en une seule commande

Afin de créer plusieurs binaires de packages en une seule fois, vous devez créer un script pour parcourez chaque package et exécutez la commande go build sur chacun d'eux, comme indiqué ci-dessous :

<code class="bash">cd $GOPATH/someProject
for CMD in `ls cmd`; do
  go build ./cmd/$CMD
done</code>

Ce script entraînera ce qui suit :

[root@node1 test]# ls $GOPATH/someProject
bin1  bin2  cmd

Pourquoi la valeur par défaut Le conseil d'utilisation d'un dossier cmd de niveau supérieur ne fonctionne pas

Le conseil par défaut d'utiliser un dossier cmd de niveau supérieur pour créer plusieurs binaires ne fonctionne pas car la commande go build ne reconnaît pas le cmd dossier sous forme de package. Au lieu de cela, il traite le dossier cmd comme un sous-répertoire du répertoire de travail actuel et construit uniquement le package contenu dans ce répertoire. Cela entraîne la construction d'un seul binaire.

Solution alternative : utilisation d'un fichier Make ou d'un script de construction

Si vous ne souhaitez pas installer les binaires dans $GOPATH/ bin, vous pouvez créer un fichier make ou un script de build pour gérer le processus de build. La plupart des projets open source utilisent cette approche pour produire plusieurs binaires. Par exemple :

Créer un fichier :

# Makefile for building multiple binaries

all: bin1 bin2

bin1:
    go build ./cmd/bin1

bin2:
    go build ./cmd/bin2

Build Script :

<code class="bash">#!/bin/bash

# Iterate over the packages in cmd and run go build on each
for CMD in `ls cmd`; do
  go build ./cmd/$CMD
done</code>

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