当前位置: 首页 > 面试题库 >

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

翟青青
2023-03-14
问题内容

我正在使用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)


问题答案:

引用命令链接文档:

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


 类似资料:
  • 问题内容: 如果我的Golang软件包名称是以下内容之一,是否可以使用该名称构建(安装,获取等)可执行文件: 并在包根目录中? 问题答案: go build -o 您可以使用-o开关使用来指定可执行文件名称。为了您例如,它会看起来像: 。但是,您只剩下软件包文件夹中的可执行文件-您仍然需要以某种方式安装它。 但是,我不知道为使用安装工具的人指定哪种方法。 如果您不担心有人使用来安装工具,则可以将其

  • 问题内容: 我有主软件包(main.go): 我还有另一个包(index.go): 如何从另一个包中获取会话值?还是应该将其传递给我的处理程序(如果是,该怎么做?)。 我是Golang的新手。请帮忙。 问题答案: 我通常将依赖项包装在自己的程序包中,这让我抽象了一些我做的常见事情。对于会话,我通常大部分时间都使用相同的会话名称,因此通常会有以下内容: 然后您可以在其他任何地方导入自己的会话包: 更

  • 我试图在构建过程中设置docker容器中的环境变量,但没有成功。使用运行命令时设置它们有效,但我需要在构建过程中设置它们。 Dockerfile文件 我用来构建的命令 运行 我正在检查可用的环境变量,通过使用 结果是 TEST_ENV不在场

  • 并且生成失败: 任务“:MyProject:SetEnv”执行失败。 启动进程“command”export“时出现问题 我已经单独测试了它:值确实会被传递,并且我的测试任务接收所有东西,无论是systemProperty、environment变量还是jvmarg。 所以Gradle本身在这里并没有什么问题。 当我在实际项目中尝试时,问题就出现了。它使用Spring进行依赖注入。我可能错了,但看

  • 如何设置可从生成访问的全局变量。格雷德尔和任务?

  • 这是我在INNO设置中的三个示例部分。我想在INI部分使用。我该怎么做?