Idflags não está funcionando para definir a versão para go build

Idflags não está funcionando para definir a versão para go build

Sou bastante novo no uso do Go e percebi que, ao construir o projeto Go, clonei do GitHub por meio de:

$ go build

O executável é compilado, mas quando executo:

$ mediamtx --version

Eu recebo v0.0.0

Pesquisei o problema no Google e descobri que poderia definir o parâmetro Idflags para definir a versão na compilação, então tentei:

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

Infelizmente, acabei com exatamente o mesmo problema eBandeiras de identificaçãoparece não fazer nada, sem erros, o executável ainda é compilado. Eu tentei excluir e começar novamente de umclonee executando o comando comsudo, não consegui fazê-lo funcionar e não tenho certeza do que estou fazendo de errado. Isso é o que estou tentandová construircomBandeiras de identificação:

MediaMTX

Este é o conteúdo do meu main.go que eu consegui para o GitHub incluir no meuBandeiras de identificaçãodiretiva

// 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()
}

Responder1

A resposta é que o parâmetro "versão" em Idflags diferencia maiúsculas de minúsculas. Eu estava usando um V "Versão" maiúsculo quando deveria estar usando um v "versão" minúsculo

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

é o comando CLI correto

Sua melhor referência para corrigir isso é consultar seu arquivo core.go para encontrar a declaração da variável de versão:

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

No meu caso, a variável version foi definida como:

var version = "v0.0.0"

O problema agora está resolvido e:

mediamtx --version

Agora produz:

v1.5.0

informação relacionada