goland IDE - 使用 ldflags 构建

问题描述 投票:0回答:1
go build -ldflags "-X main.subversion=`date -u +.%Y%m%d.%H%M%S`"

在命令行中运行良好,

但是当将相同的标志添加到我的 go 构建配置 > Go 工具参数时,goland ide 失败了:

-ldflags "-X main.subversion=`date -u +.%Y%m%d.%H%M%S`"

似乎在转义双引号时遇到问题,但无法弄清楚我做错了什么。

--编辑:

在运行选项卡中我看到:

GOROOT=/usr/local/opt/go/libexec #gosetup
GOPATH=/Users/..../go #gosetup
/usr/local/opt/go/libexec/bin/go build -ldflags "-X main.subversion=$(date -u +.%Y%m%d.%H%M%S)" -o /Users/..../Downloads/ta_mac . #gosetup

invalid value "\"-X" for flag -ldflags: missing =<value> in <pattern>=<value>
usage: go build [-o output] [build flags] [packages]
Compilation finished with exit code 2
Run 'go help build' for details.

尽管如果我手动运行相同的命令,它会成功,并且应用程序会产生预期的行为,并为变量 subversion 提供正确的值。

/usr/local/opt/go/libexec/bin/go build -ldflags "-X main.subversion=$(date -u +.%Y%m%d.%H%M%S)" -o /Users/..../Downloads/ta_mac . #gosetup

---编辑2:

我正在探索使用

GOFLAGS="-ldflags=-X main.subversion=$(date -u +.%Y%m%d.%H%M%S)"

但到目前为止我遇到了类似的问题

---编辑3:

还有一个选项似乎是创建一个 makefile,但现在已经研究这个选项几个小时了,所以我会在研究这个选项之前暂停一下,这对于我需要做的事情来说可能过于复杂

---编辑4: jetbrains 建议在 Go 工具参数下使用此语法:

-ldflags "-X 'main.subversion=`date -u +.%Y%m%d.%H%M%S`'"

虽然这不会引发错误,但它也不会产生预期的行为:subversion 变量实际上被分配了字符串:

`date -u +.%Y%m%d.%H%M%S`

显然我希望成为这样的人

20231231.235959

我尝试了类似的替代方案但无济于事:

-ldflags "-X 'main.subversion=$(date -u +.%Y%m%d.%H%M%S)'"
-ldflags "-X 'main.subversion='$(date -u +.%Y%m%d.%H%M%S)"
-ldflags "-X 'main.subversion=`date -u +.%Y%m%d.%H%M%S`'"
-ldflags "-X 'main.subversion='`date -u +.%Y%m%d.%H%M%S`"
-ldflags "-X \"main.subversion=$(date -u +.%Y%m%d.%H%M%S)\""
-ldflags "-X \"main.subversion=\"$(date -u +.%Y%m%d.%H%M%S)"
-ldflags "-X \"main.subversion=`date -u +.%Y%m%d.%H%M%S`\""
-ldflags "-X \"main.subversion=\"`date -u +.%Y%m%d.%H%M%S`"
go build
1个回答
0
投票

我猜你需要单引号而不是双引号。

© www.soinside.com 2019 - 2024. All rights reserved.