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