3 回答

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])

TA貢獻1155條經驗 獲得超0個贊
我已經為此構建了自己的名為gobuild的小工具,并且仍在研究中。它應該能夠編譯大多數不與C代碼接口的程序/庫,而無需編寫任何構建腳本/ makefile。

TA貢獻1824條經驗 獲得超5個贊
您可以在Go Utils and Tools中找到所有可用的Go構建工具。
但是其中的更多內容已被“ go build
”命令和缺少Go 1的Makefile所取代。
請參閱“ go工具”博客文章。
Go軟件包根本沒有任何構建配置。沒有makefile文件,沒有依賴項的描述等。
那么它是如何工作的呢?一切都從源代碼中檢索。要使魔術發生,必須首先完成一件事。
即使Makefile仍然可以使用,對于純Go源代碼,也可以將其刪除(例如,例如在此代碼回顧中)
- 3 回答
- 0 關注
- 276 瀏覽
添加回答
舉報