Heim  >  Artikel  >  Backend-Entwicklung  >  Warum sollten Sie alternative Build-Systeme für die Go-Entwicklung in Betracht ziehen?

Warum sollten Sie alternative Build-Systeme für die Go-Entwicklung in Betracht ziehen?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 20:43:30743Durchsuche

Why Should You Consider Alternative Build Systems for Go Development?

Alternative Build-Systeme für die Go-Entwicklung

Während Go mit einem eigenen Makefile zum Erstellen von Programmen ausgeliefert wird, suchen Entwickler möglicherweise nach alternativen Build-Systemen, die zusätzliche Funktionen bieten Funktionen oder einen anderen Entwicklungsworkflow.

Beliebte Build-Systeme

Mehrere beliebte Build-Systeme haben Unterstützung für Go hinzugefügt, darunter:

  • Scons
  • Waf

Scons-Beispiel

Um die Verwendung von Scons mit Go zu veranschaulichen , hier ist eine SConstruct-Beispieldatei:

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

Das obige ist der detaillierte Inhalt vonWarum sollten Sie alternative Build-Systeme für die Go-Entwicklung in Betracht ziehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn