저는 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:
이것은 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