亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

哪些構建系統可與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 關注
  • 276 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號