Idflags は Go ビルドのバージョン設定には機能しません

Idflags は Go ビルドのバージョン設定には機能しません

私は Go を使い始めたばかりですが、GitHub からクローンした Go プロジェクトをビルドするときに次のことに気付きました。

$ go build

実行ファイルはビルドされていますが、実行すると次のようになります。

$ mediamtx --version

v0.0.0を取得しました

この問題を Google で検索したところ、ビルド時にバージョンを設定するために Idflags パラメータを設定できることがわかったので、次の操作を試しました。

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

残念ながら、私もまったく同じ問題に遭遇し、IDフラグ何も起こらないようですが、エラーもなく実行ファイルはビルドされます。削除してもう一度やり直してみましたが、git クローンそして次のコマンドを実行します須藤、まだうまく動作していないし、何が間違っているのかよくわからない。これが私がやろうとしていることです構築するIDフラグ:

メディアMTX

これは私のmain.goの内容で、GitHubのパスを私のIDフラグ指令

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

答え1

答えは、Idflags の「version」パラメータは大文字と小文字が区別されるということです。小文字の v「version」を使用するべきところを大文字の V「Version」を使用していました。

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

正しいCLIコマンド

これを修正するための最善の参考資料は、core.go ファイルを参照してバージョン変数の宣言を見つけることです。

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

私の場合、バージョン変数は次のように定義されました。

var version = "v0.0.0"

問題は解決され、次のようになりました。

mediamtx --version

出力は次のようになります:

v1.5.0

関連情報