"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quels systèmes de build étendent le flux de travail de développement pour Go ?

Quels systèmes de build étendent le flux de travail de développement pour Go ?

Publié le 2024-11-08
Parcourir:617

What Build Systems Extend the Development Workflow for Go?

Go Build Systems : étendre votre flux de travail de développement

Go, le langage de programmation salué pour sa simplicité et sa concurrence, est largement accepté. À mesure que les projets de développement évoluent, le besoin de systèmes de construction robustes pour automatiser les processus de construction, de test et de déploiement devient crucial. Mais quels systèmes de build prennent en charge Go et améliorent ses capacités ?

Makefile : le système de build initial de Go

Traditionnellement, Go s'appuie sur le Makefile fourni avec sa distribution source. Ce Makefile, situé dans $GOROOT/doc, facilite diverses tâches de construction. Cependant, la communauté Go a exploré des systèmes de build alternatifs pour étendre les fonctionnalités de Go.

Extension des options de build de Go

Plusieurs systèmes de build populaires ont été adaptés pour prendre en charge Go, offrant des fonctionnalités et flexibilité. SCons, un outil de construction basé sur Python, est une alternative largement utilisée. WAF, un autre système de build populaire, a également été implémenté pour Go.

Exemple : Construire avec SCons

Voici un exemple de fichier SConstruct illustrant comment utiliser SCons avec 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])

Conclusion

Le Makefile de la distribution source Go fournit une base solide pour créer des programmes Go . Cependant, des systèmes de construction alternatifs tels que SCons et WAF offrent des fonctionnalités et une flexibilité supplémentaires. En adoptant ces systèmes de build, les développeurs Go peuvent rationaliser leurs processus de build, améliorer les capacités de test et simplifier le déploiement de projets.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3