在go包中获取make文件变量?

时间:2015-07-06 18:10:04

标签: go makefile

我在make文件中有一个变量VERSION,它使用-ldflags

在编译时设置二进制版本
VERSION = $(strip $(TIMESTAMP))
LDFLAGS = -ldflags "-X main.buildTime $(BUILD_TIME) -X main.buildNumber $(VERSION)"

现在我想在一个不是main的包中获取VERSION并打印它。我尝试了很多选项,但无法使其正常工作。

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

1 个答案:

答案 0 :(得分:2)

目录结构:

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

从1.5开始,语法更改为importpath.name=string