小编典典

如何在Golang构建中使用-ldflags -X设置软件包变量

go

我正在使用Go 1.9.2创建一个应用,并且试图ldflags -X在构建过程中使用选项向其添加版本字符串变量。

我已经通过使用:Versionmain包中设置了一个变量-ldflags "-X main.Version=1.0.0",但是我真正需要的是Versionconfig包中而不是在main其中设置变量。这可能吗?

这是我的构建命令:

go build -ldflags "-X config.Version=1.0.0" -o $(MY_BIN) $(MY_SRC)


阅读 751

收藏
2020-07-02

共1个答案

小编典典

引用命令链接文档:

-X importpath.name =值
    将名为name的importpath中的字符串变量的值设置为value。
    请注意,在Go 1.5之前,此选项采用两个单独的参数。
    现在,需要在第一个=符号上拆分一个参数。

因此,它可以用于任何包装,而不仅仅是main包装。但是您必须指定完整的 导入路径 ,而不仅仅是软件包名称。

例如,如果您的config软件包位于$GOPATH/src/my/package/config,则使用以下命令:

go build -ldflags "-X my/package/config.Version=1.0.0" -o $(MY_BIN) $(MY_SRC)
2020-07-02