什么构建系统与Go一起工作?

什么构建系统与Go一起工作?,go,build-system,Go,Build System,我知道Go源代码附带了一个Makefile(它在$GOROOT/doc中),我现在正在使用它,但是其他流行的构建系统是否已经添加了对Go的支持?是否有人为…编写了构建脚本 你用什么来构建围棋程序?我还没有写一个足够大的项目来需要构建系统,所以一个简单的build.sh就足够了 您可以使用$GOROOT、$GOARCH和$GOOS来确定您需要什么: jurily@jurily ~ $ env | grep GO GOARCH=amd64 GOROOT=/home/jurily/go GOOS=li

我知道Go源代码附带了一个Makefile(它在
$GOROOT/doc
中),我现在正在使用它,但是其他流行的构建系统是否已经添加了对Go的支持?是否有人为…编写了构建脚本


你用什么来构建围棋程序?

我还没有写一个足够大的项目来需要构建系统,所以一个简单的
build.sh
就足够了

您可以使用
$GOROOT
$GOARCH
$GOOS
来确定您需要什么:

jurily@jurily ~ $ env | grep GO
GOARCH=amd64
GOROOT=/home/jurily/go
GOOS=linux

如果够了,我也够了。

我一直在用烤饼;这是一个示例
SConstruct
文件:

archs = {'amd64': '6', '386': '8', 'arm': '5',}

def gc(source, target, env, for_signature):
    targets = target[0]
    sources = ' '.join(str(s) for s in source)
    flags = ''
    for include in env.get('GOINCLUDE', []):
        flags += '-I %s ' % (include)
    return '%s -o %s %s %s' % (env['GOCOMPILER'], targets, flags, sources)

def ld(source, target, env, for_signature):
    targets = target[0]
    sources = ' '.join(str(s) for s in source)
    return '%s -o %s %s' % (env['GOLINKER'], targets, sources)

def _go_object_suffix(env, sources):
    return "." + archs[env['ENV']['GOARCH']]

def _go_program_prefix(env, sources):
    return env['PROGPREFIX']

def _go_program_suffix(env, sources):
    return env['PROGSUFFIX']

go_compiler = Builder(generator=gc,
                      suffix=_go_object_suffix,
                      src_suffix='.go',)
go_linker = Builder(generator=ld,
                    prefix=_go_program_prefix,
                    suffix=_go_program_suffix,)

# Create environment
import os
env = Environment(BUILDERS={'Go': go_compiler, 'GoProgram': go_linker},
                  ENV=os.environ,)
arch_prefix = archs[os.environ['GOARCH']]
env.SetDefault(GOCOMPILER=os.path.join(os.environ['GOBIN'], arch_prefix + 'g'))
env.SetDefault(GOLINKER=os.path.join(os.environ['GOBIN'], arch_prefix + 'l'))
# Build programs
# Modify this to suit your program
main_package = env.Go(target='main', source='main.go')
program = env.GoProgram(target='program', source=[main_package])

我已经建立了我自己的小工具,称为,并仍在努力工作。它应该能够编译大多数不与C代码交互的程序/库,而无需编写任何构建脚本/生成文件。

您可以在中找到所有可用的Go构建工具

但是其中更多的被“
go build
”命令和go 1缺少Makefile所取代。
请参阅“”博客文章

Go包根本没有任何构建配置。没有生成文件,没有依赖项的描述等。
那么它是如何工作的呢?所有内容都从源代码中检索。要让魔法发生,必须先做一件事


即使Makefile仍然可以使用,对于纯Go源代码,它们也可以被删除(例如在本例中)

其他人觉得
$GOOS
发音很有趣吗?@Jed:我是匈牙利人。你会发现我说的每一句话都很有趣。我不是scons方面的专家,你到底是如何使用它的?对不起,Pynt,我澄清了代码示例。只需将其放入项目目录中的SConstruct文件中,然后在项目级别运行
scons