我在头中有两个具有不同构建约束的 go 文件。constants_production.go:// +build production,!stagingpackage mainconst ( URL = "production")constants_staging.go:// +build staging,!productionpackage mainconst ( URL = "staging")main.go:package mainfunc main() { fmt.Println(URL)}当我执行 a 时go install -tags "staging",有时会打印production; 有时,它会打印staging. 同样,当我这样做时go install -tags "production",...如何在每次构建时获得一致的输出?当我将暂存指定为构建标志时,如何使其打印暂存?当我将生产指定为构建标志时,如何使其打印生产?我在这里做错了吗?
1 回答
鸿蒙传说
TA贡献1865条经验 获得超7个赞
go build并且go install如果它看起来没有任何变化,则不会重建包(二进制)——而且它对命令行构建标签的变化不敏感。
看到这一点的一种方法是-v在构建包时添加并打印它们:
$ go install -v -tags "staging"
my/server
$ go install -v -tags "production"
(no output)
您可以通过添加-a标志来强制重建,这往往是矫枉过正:
$ go install -a -v -tags "production"
my/server
...或者在构建之前接触服务器源文件:
$ touch main.go
$ go install -a -tags "staging"
...或在构建之前手动删除二进制文件:
$ rm .../bin/server
$ go install -a -tags "production"
- 1 回答
- 0 关注
- 234 浏览
添加回答
举报
0/150
提交
取消