go - 如何正确使用构建标签?

我需要能够构建不同版本的 go 应用程序;一个“调试”版本和一个普通版本。

这很容易做到;我只是有一个 const DEBUG,它控制应用程序的行为,但每次我需要在构建类型之间交换时都必须编辑配置文件,这很烦人。

我正在阅读有关 go build (http://golang.org/pkg/go/build/) 和标签的信息,我想也许我可以这样做:

config.go:

// +build !debug
package build
const DEBUG = false

config.debug.go:

// +build debug
package build
const DEBUG = true

然后我应该能够使用 go buildgo build -tags debug 构建,并且标签应该排除 config.go 和包括 config.debug.go.

...但这不起作用。我明白了:

src/build/config.go:3: DEBUG redeclared in this block (<0>) previous declaration at src/build/config.debug.go:3

我做错了什么?

我应该使用另一种更合适的#ifdef 风格的方法吗?

最佳答案

见 my answer to another question . //+build 行之后需要一个空行。

另外,您可能需要 config.go 中的 !,而不是 config.debug.go;大概你想要一个“DEBUG = false”。

https://stackoverflow.com/questions/15214459/

相关文章:

eclipse - 项目 XXX 在其构建路径上没有任何 GWT SDK

logging - 渐变颜色输出

Android Studio - 错误 :Program type already present

java - 构建失败 java.lang.OutOfMemoryError : Java heap

ruby - 安装 Xcode 4.2 后无法使用 native 扩展构建 json (1.6.3)

c++ - 在一个 Eclipse 项目中构建多个二进制文件

android - 使用 log4j 更新 Android Studio 后 gradle 构建出错

r - 关于 .Rbuildignore 正确使用 devtools 和/或 RStudio

c++ - 在 Sublime Text 中构建系统

visual-studio-2010 - 项目引用和项目依赖有什么区别?