我正在使用Go 1.9.2创建一个应用程序,并试图在构建过程中使用ldflags -X
选项向其添加一个版本字符串变量。
我已经在我的main
包中设置了一个Version
变量,使用了:-ldflags "-X main.Version=1.0.0"
,但是我真正需要的是在我的config
包中设置Version
变量,而不是main
变量。这可能吗?
下面是我的构建命令:go build -ldflags "-X config.Version=1.0.0" -o $(MY_BIN) $(MY_SRC)
3条答案
按热度按时间ippsafx71#
引用Command link的文档:
所以它可以用于任何包,而不仅仅是
main
包,但是你必须指定完整的 import path,而不仅仅是包名。例如,如果您的
config
软件包位于$GOPATH/src/my/package/config
,则使用以下命令:mrphzbgm2#
这里有一个简单的例子,希望它能澄清和帮助如何轻松地做到这一点:
为应用程序创建目录:
创建一个子目录
config
:添加以下文件。该文件应位于
app/config/vars.go
下:在根
app/
中,添加主包main.go
:现在是构建的时候了:
go build -ldflags "-X 'app/config.Version=0.0.1' -X 'app/config.BuildTime=$(date)'"
构建完成后,您可以立即运行应用程序:
最后,您有时可能需要探索您没有自己编写代码的特定应用在
ldflags
中提供了什么,您可以使用go tool
附带的nm
列出所有ldflags
。只需构建应用程序,然后使用
go tool nm
列出所有链接器标志。仍然有任何问题或任何东西需要进一步澄清?请随时留下评论,我会尽快给你回复。
bksxznpy3#
添加(未初始化的字符串)变量,构建二进制文件,然后执行
它将显示如下内容
这就是你要找的导入路径