Idflags funktioniert nicht zum Festlegen der Version für Go Build

Idflags funktioniert nicht zum Festlegen der Version für Go Build

Ich bin ein ziemlicher Neuling in der Verwendung von Go und mir ist beim Erstellen des Go-Projekts aufgefallen, dass ich es von GitHub geklont habe über:

$ go build

Die ausführbare Datei wird erstellt, aber wenn ich sie ausführe, geschieht Folgendes:

$ mediamtx --version

Ich bekomme v0.0.0

Ich habe das Problem gegoogelt und herausgefunden, dass ich den Parameter Idflags festlegen kann, um die Version beim Build festzulegen. Also habe ich Folgendes versucht:

go build -ldflags="-X 'github.com/bluenviron/mediamtx/internal/core.Version=v1.5.0'"

Leider hatte ich genau das gleiche Problem undID-Flaggenscheint nichts zu tun, ohne Fehler wird die ausführbare Datei immer noch erstellt. Ich habe versucht, sie zu löschen und von einemGit-Klonund Ausführen des Befehls mitsudo, habe es nicht geschafft, es zum Laufen zu bringen, und bin mir nicht sicher, was ich falsch mache. Das ist, was ich versuchebauemitID-Flaggen:

MedienMTX

Dies ist der Inhalt meiner main.go, für den ich meinen Pfad für GitHub erhalten habe, um ihn in meineID-FlaggenRichtlinie

// main executable.
package main

import (
        "os"

        "github.com/bluenviron/mediamtx/internal/core"
)

func main() {
        s, ok := core.New(os.Args[1:])
        if !ok {
                os.Exit(1)
        }
        s.Wait()
}

Antwort1

Die Antwort ist, dass der Parameter „Version“ in Idflags zwischen Groß- und Kleinschreibung unterscheidet. Ich habe „Version“ mit einem großen V geschrieben, obwohl ich „Version“ mit einem kleinen v hätte schreiben sollen.

go build -ldflags="-X 'github.com/bluenviron/mediamtx/internal/core.version=v1.5.0'"

ist der richtige CLI-Befehl

Um dieses Problem zu beheben, können Sie am besten in Ihrer Datei core.go nach der Deklaration der Versionsvariable suchen:

~/mediamtx/internal/core/ [main] vi core.go

In meinem Fall wurde die Versionsvariable wie folgt definiert:

var version = "v0.0.0"

Das Problem ist jetzt behoben und:

mediamtx --version

Gibt jetzt Folgendes aus:

v1.5.0

verwandte Informationen