在go包中获取make文件变量



我在make文件中有一个变量VERSION,它在编译时使用-ldflags设置二进制版本

VERSION = $(strip $(TIMESTAMP))
LDFLAGS = -ldflags "-X main.buildTime $(BUILD_TIME) -X main.buildNumber $(VERSION)"

现在我想在一个不是main的包中获得版本并打印它。我尝试了很多选项,但都没有成功。

我的问题是我如何在包中得到它,然后在运行时将其打印到客户端,如you are connected to app version 2.0 ..??

目录结构:
- main.go
- test/
  - test.go

test.go

package test
var Version = ""

main.go

package main
import (
    "fmt"
    "test"
)
func main() {
    fmt.Println(test.Version)
}

最后,运行:

go run -ldflags="-X test.Version 2.0.0" main.go

输出:

> 2.0.0

由于可以指定导入路径,因此可以在任何地方设置字符串的值,而不仅仅是在main中。

从go 1.5起,语法改为importpath.name=string

最新更新