"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Qué sistemas de compilación amplían el flujo de trabajo de desarrollo de Go?

¿Qué sistemas de compilación amplían el flujo de trabajo de desarrollo de Go?

Publicado el 2024-11-08
Navegar:273

What Build Systems Extend the Development Workflow for Go?

Go Build Systems: ampliando su flujo de trabajo de desarrollo

Go, el lenguaje de programación aclamado por su simplicidad y simultaneidad, ha ganado una amplia aceptación. A medida que evolucionan los proyectos de desarrollo, la necesidad de contar con sistemas de construcción sólidos para automatizar los procesos de construcción, pruebas e implementación se vuelve crucial. Pero, ¿qué sistemas de compilación admiten Go y mejoran sus capacidades?

Makefile: el sistema de compilación inicial de Go

Tradicionalmente, Go se ha basado en Makefile incluido con su distribución fuente. Este Makefile, ubicado en $GOROOT/doc, facilita varias tareas de compilación. Sin embargo, la comunidad Go ha explorado sistemas de compilación alternativos para ampliar la funcionalidad de Go.

Ampliando las opciones de compilación de Go

Varios sistemas de compilación populares se han adaptado para admitir Go, ofreciendo opciones adicionales características y flexibilidad. SCons, una herramienta de compilación basada en Python, es una alternativa ampliamente utilizada. WAF, otro sistema de compilación popular, también se implementó para Go.

Ejemplo: compilación con SCons

Aquí hay un archivo SConstruct de muestra que ilustra cómo usar SCons con 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])

Conclusión

El Makefile de la distribución fuente Go proporciona una base sólida para crear programas Go . Sin embargo, los sistemas de construcción alternativos como SCons y WAF ofrecen características y flexibilidad adicionales. Al adoptar estos sistemas de compilación, los desarrolladores de Go pueden optimizar sus procesos de compilación, mejorar las capacidades de prueba y simplificar la implementación de proyectos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3