"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quais sistemas de construção ampliam o fluxo de trabalho de desenvolvimento para Go?

Quais sistemas de construção ampliam o fluxo de trabalho de desenvolvimento para Go?

Publicado em 2024-11-08
Navegar:670

What Build Systems Extend the Development Workflow for Go?

Go Build Systems: ampliando seu fluxo de trabalho de desenvolvimento

Go, a linguagem de programação aclamada por sua simplicidade e simultaneidade, ganhou ampla aceitação. À medida que os projetos de desenvolvimento evoluem, a necessidade de sistemas de construção robustos para automatizar os processos de construção, teste e implantação torna-se crucial. Mas quais sistemas de compilação suportam o Go e aprimoram seus recursos?

Makefile: o sistema de compilação inicial do Go

Tradicionalmente, o Go conta com o Makefile incluído em sua distribuição fonte. Este Makefile, localizado em $GOROOT/doc, facilita várias tarefas de construção. No entanto, a comunidade Go explorou sistemas de compilação alternativos para estender a funcionalidade do Go.

Expandindo as opções de compilação do Go

Vários sistemas de compilação populares foram adaptados para suportar Go, oferecendo suporte adicional recursos e flexibilidade. SCons, uma ferramenta de construção baseada em Python, é uma alternativa amplamente utilizada. WAF, outro sistema de compilação popular, também foi implementado para Go.

Exemplo: Construindo com SCons

Aqui está um exemplo de arquivo SConstruct ilustrando como usar SCons com Go:

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

Conclusão

O Makefile da distribuição fonte Go fornece uma base sólida para a construção de programas Go . No entanto, sistemas de construção alternativos, como SCons e WAF, oferecem recursos e flexibilidade adicionais. Ao adotar esses sistemas de construção, os desenvolvedores Go podem agilizar seus processos de construção, aprimorar os recursos de teste e simplificar a implantação do projeto.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3