Go 빌드 시스템: 개발 작업 흐름 확장
단순성과 동시성으로 호평을 받은 프로그래밍 언어인 Go는 널리 받아들여졌습니다. 개발 프로젝트가 발전함에 따라 구축, 테스트 및 배포 프로세스를 자동화하는 강력한 빌드 시스템의 필요성이 중요해졌습니다. 그러면 어떤 빌드 시스템이 Go를 지원하고 그 기능을 향상합니까?
Makefile: 초기 Go 빌드 시스템
전통적으로 Go는 소스 배포판과 함께 번들로 제공되는 Makefile에 의존해 왔습니다. $GOROOT/doc에 있는 이 Makefile은 다양한 빌드 작업을 용이하게 합니다. 그러나 Go 커뮤니티는 Go의 기능을 확장하기 위해 대체 빌드 시스템을 모색했습니다.
Go의 빌드 옵션 확장
여러 인기 빌드 시스템이 Go를 지원하도록 조정되었습니다. 기능과 유연성. Python 기반 빌드 도구인 SCons는 널리 사용되는 대안입니다. 또 다른 인기 있는 빌드 시스템인 WAF도 Go용으로 구현되었습니다.
예: SCons를 사용하여 빌드
다음은 Go에서 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])
결론
Go 소스 배포판의 Makefile은 Go 프로그램 구축을 위한 견고한 기반을 제공합니다. . 그러나 SCons 및 WAF와 같은 대체 빌드 시스템은 추가 기능과 유연성을 제공합니다. 이러한 빌드 시스템을 수용함으로써 Go 개발자는 빌드 프로세스를 간소화하고 테스트 기능을 향상하며 프로젝트 배포를 단순화할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3