哪些构建系统可与Go一起使用?

我知道Go源代码附带了$GOROOT/doc我现在正在使用的Makefile(位于中),但是是否有其他流行的构建系统添加了对Go的支持?有没有人为scons,waf等编写构建脚本...

您用什么来构建Go程序?


开心每一天1111
浏览 236回答 3
3回答

慕的地8271018

我一直在使用scons;这是一个示例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 environmentimport osenv = 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 programmain_package = env.Go(target='main', source='main.go')program = env.GoProgram(target='program', source=[main_package])

白衣非少年

我已经为此构建了自己的名为gobuild的小工具,并且仍在研究中。它应该能够编译大多数不与C代码接口的程序/库,而无需编写任何构建脚本/ makefile。

沧海一幻觉

您可以在Go Utils and Tools中找到所有可用的Go构建工具。但是其中的更多内容已被“ go build”命令和缺少Go 1的Makefile所取代。请参阅“ go工具”博客文章。Go软件包根本没有任何构建配置。没有makefile文件,没有依赖项的描述等。那么它是如何工作的呢?一切都从源代码中检索。要使魔术发生,必须首先完成一件事。即使Makefile仍然可以使用,对于纯Go源代码,也可以将其删除(例如,例如在此代码回顾中)
打开App,查看更多内容
随时随地看视频慕课网APP