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

标签 go makefile

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

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

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

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

最佳答案

目录结构:

- main.go
- test/
  - test.go

test.go

package test

var Version = ""

ma​​in.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

关于go - 在 go 包中获取 make 文件变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31252748/

相关文章:

mysql - 使用下划线从 golang 结构体访问 mysql 字段

http - 将 HTTP JSON 正文响应转换为 Go 中的映射

ubuntu - Makefile:72: *** 多个目标模式。停止。尝试在 ubuntu 14.04 上安装 imapsync 时

c - 如何正确创建和使用makefile

docker - 有条件不执行

c++ - 无法从源代码构建 OpenCV

http - 如何在Golang HTTP服务器中定义全局计数器

git - 从 Go `git shortlog` 调用 'exec()' 有什么问题?

html - r.From ["username"] 给出空值

c - 安装仅项目非系统版本的 OpenSSL 和 libcrypt 库