我需要能够构建不同版本的 go 应用程序;一个“调试”版本和一个普通版本。
这很容易做到;我只是有一个 const DEBUG,它控制应用程序的行为,但每次我需要在构建类型之间交换时都必须编辑配置文件,这很烦人。
我正在阅读有关 go build ( http://golang.org/pkg/go/build/ ) 和标签的信息,我想也许我可以这样做:
配置.go:
// +build !debug
package build
const DEBUG = false
config.debug.go:
// +build debug
package build
const DEBUG = true
然后我应该能够使用go build
or构建go build -tags debug
,并且标签应该 excludeconfig.go
和 include config.debug.go
。
...但这不起作用。我得到:
src/build/config.go:3:在此块 (<0>) 中重新声明了 DEBUG,之前在 src/build/config.debug.go:3 的声明
我究竟做错了什么?
我应该使用另一种更合适的#ifdef 风格的方法吗?