我可以使用自定义构建标志,如os / arch注释指令

时间:2017-11-12 20:53:32

标签: go

在golang中,我能够在文件的第一行注释中设置编译器指令,以确定该文件上的代码是否包含在基于OS或arch的构建中,例如

目标窗口:

// +build windows

或非Windows:

// +build !windows

有没有办法在构建时传入我自己的布尔变量来以相同的方式运行?

背景是我想要一个布尔调试标志,我可以传入它来进行调试构建,我不希望我的调试代码包含在正常构建中。

我目前做的事情是这样的:

go build -ldflags "-X main.Debug=true"

但我更喜欢使用第一行注释方法,因为这种方法不会忽略构建中的调试代码(我认为)。

理想情况下我想:

调试on.go

// +build debug

package debug

func Debug() bool {
    return true
}

debug-off.go

// +build !debug

package debug

func Debug() bool {
    return false
}

更新RE重复 我接受相关的问题有相同的主题,但它确实不是一个重复的问题,这是一个已经知道这个功能但正在努力实现的人的问题。

我的2美分似乎相当于“人们在法国说什么语言?” vs“你怎么说'这不是一个重复'的法语?”

1 个答案:

答案 0 :(得分:6)

  

Command go

     

Go是一个管理Go源代码的工具。

     

用法:

go command [arguments]
     

Compile packages and dependencies

     

用法:

go build [-o output] [-i] [build flags] [packages]
     

Build编译导入路径命名的包,以及   他们的依赖项,但它不安装结果。

     

构建标志由build,clean,get,install,list共享,   运行和测试命令:

-tags 'tag list'
  a space-separated list of build tags to consider satisfied during the
  build. For more information about build tags, see the description of
  build constraints in the documentation for the `go/build` package.
  

go/build package: Build Constraints

例如,在源代码中,

// +build debug

在运行时,buildcleangetinstalllistruntest { {1}}命令,

go