为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
开心每一天1111 2021-04-15 12:15:29
我知道Go源代码附带了$GOROOT/doc我现在正在使用的Makefile(位于中),但是是否有其他流行的构建系统添加了对Go的支持?有没有人为scons,waf等编写构建脚本...您用什么来构建Go程序?
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我一直在使用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 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])


查看完整回答
反对 回复 2021-04-26
?
白衣非少年

TA贡献1155条经验 获得超0个赞

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


查看完整回答
反对 回复 2021-04-26
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

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

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

Go软件包根本没有任何构建配置。没有makefile文件,没有依赖项的描述等。
那么它是如何工作的呢?一切都从源代码中检索。要使魔术发生,必须首先完成一件事。

即使Makefile仍然可以使用,对于纯Go源代码,也可以将其删除(例如,例如在此代码回顾中)


查看完整回答
反对 回复 2021-04-26
  • 3 回答
  • 0 关注
  • 234 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信