Go 빌드의 버전 설정을 위해 Idflags가 작동하지 않습니다.

Go 빌드의 버전 설정을 위해 Idflags가 작동하지 않습니다.

저는 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'"

불행하게도 나는 똑같은 문제에 직면하게 되었고,Idflags아무 작업도 수행하지 않는 것으로 보이며 오류 없이 실행 파일이 계속 빌드됩니다. 삭제하고 다시 시작해 보았습니다.자식 클론그리고 다음과 같이 명령을 실행합니다.sudo, 제대로 작동하지 않았고 내가 뭘 잘못하고 있는지 잘 모르겠습니다. 이것이 내가 노력하는 것입니다가서 짓다~와 함께Idflags:

미디어MTX

이것은 GitHub에 포함할 경로를 얻은 main.go의 콘텐츠입니다.Idflags지령

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

관련 정보