我已经看到以下命令来设置构建版本
go build -ldflags "-X main.minversion `date -u +.%Y%m%d%.H%M%S`" service.go
但我无法让时间戳部分在Windows上运行!
我使用的是1.5以下参数......
build -i -ldflags "-X main.SERVER_NAME=MFFP -X main.VERSION=1.0.0 -X main.BUILD_DATE=`date -u +.%Y%m%d%.H%M%S`"
错误与日期部分
有关此错误系统是否相关? 有人在Windows上尝试过这个吗?
谢谢!
答案 0 :(得分:2)
* nix系统上的命令正在使用反引号命令替换。 date
是POSIX的内置函数,`
中的任何内容都被解释为shell命令,并被其值替换。
cmd.exe
根本没有在反引号中进行命令替换,有一些方法可以使用for /F delims=""
来完成同样的事情,也就是Windows shell中最强大的命令,但是它非常hacky。也许使用powershell代替,它支持$(command)
语法?
PS C:\users\adsmith> go build -i -ldflags "-X main.SERVER_NAME=MFFP -X main.VERSION=1.0.0 -X main.BUILD_DATE=$(Get-Date -uformat .%Y%m%d%.H%M%S)"
您可能需要使用格式 - 我不确定POSIX上应该是什么样子。这输出:
.20160107.111641
// Jan 7th 2016, 11:16:41