Heim >Backend-Entwicklung >Golang >Warum funktioniert der Standardratschlag zur Verwendung eines Cmd-Ordners der obersten Ebene nicht für die Erstellung mehrerer Binärdateien?

Warum funktioniert der Standardratschlag zur Verwendung eines Cmd-Ordners der obersten Ebene nicht für die Erstellung mehrerer Binärdateien?

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 09:00:30398Durchsuche

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

Erstellen mehrerer Paket-Binärdateien in einem einzigen Befehl

Um mehrere Paket-Binärdateien auf einmal zu erstellen, müssen Sie ein Skript dafür erstellen Durchlaufen Sie jedes Paket und führen Sie den Befehl „go build“ für jedes Paket aus, wie unten gezeigt:

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

Dieses Skript führt zu Folgendem:

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

Warum der Standard Der Ratschlag, einen Cmd-Ordner der obersten Ebene zu verwenden, funktioniert nicht

Der Standardratschlag, einen Cmd-Ordner der obersten Ebene zum Erstellen mehrerer Binärdateien zu verwenden, funktioniert nicht, da der Befehl go build den cmd nicht erkennt Ordner als Paket. Stattdessen wird der cmd-Ordner als Unterverzeichnis des aktuellen Arbeitsverzeichnisses behandelt und nur das in diesem Verzeichnis enthaltene Paket erstellt. Dies führt dazu, dass nur eine Binärdatei erstellt wird.

Alternative Lösung: Verwendung einer Make-Datei oder eines Build-Skripts

Wenn Sie die Binärdateien nicht in $GOPATH/ installieren möchten bin können Sie eine Make-Datei oder ein Build-Skript erstellen, um den Build-Prozess zu verwalten. Die meisten Open-Source-Projekte verwenden diesen Ansatz, um mehrere Binärdateien zu erstellen. Zum Beispiel:

Datei erstellen:

# Makefile for building multiple binaries

all: bin1 bin2

bin1:
    go build ./cmd/bin1

bin2:
    go build ./cmd/bin2

Skript erstellen:

<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>

Das obige ist der detaillierte Inhalt vonWarum funktioniert der Standardratschlag zur Verwendung eines Cmd-Ordners der obersten Ebene nicht für die Erstellung mehrerer Binärdateien?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn