Go编译器的条件代码标志

huangapple go评论93阅读模式
英文:

Go compiler flag for conditional code

问题

我是新手学习Go语言,之前是C++程序员,对于如何在Go中实现这个功能有些困惑。
我想根据编译时的标志来添加一些测试代码。

我尝试使用-ldflags,但是只能设置一个变量,无法设置多个。

我尝试了以下方式:-ldflags "X main.var1 var1_value" "X main.var2 var2_value"

我这样做对吗?

英文:

I am new to Go and as a former C++ programmer am a little confused on how to do this in Go.
I want to add a compile time flag based on which I may include some test code.

I tried using -ldflags, but am unable to go beyond a single variable.

This is what I tried: -ldflags "X main.var1 var1_value" "X main.var2 var2_value".

Am I doing the right thing here?

答案1

得分: 5

考虑使用构建约束而不是-X标志。这样可以通过以下方式有条件地编译任何代码:

go install -tags 'foo bar'

如果你仍然想多次使用-X标志,可以这样做:

go install -ldflags '-X main.Foo 1 -X main.Bar 2' main.go

或者(在Go 1.5+中添加和推荐):

go install -ldflags '-X main.Foo=1 -X main.Bar=2' main.go
英文:

Consider using build constraints instead of the -X flag. This, allows you to compile any code conditionally by doing something like

go install -tags 'foo bar'

If you still want to use the -X flag multiple times, do it like this:

go install -ldflags '-X main.Foo 1 -X main.Bar 2' main.go

or (added and recommended in Go 1.5+)

go install -ldflags '-X main.Foo=1 -X main.Bar=2' main.go

huangapple
  • 本文由 发表于 2015年7月1日 00:17:57
  • 转载请务必保留本文链接:https://go.coder-hub.com/31143399.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定