「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go の開発ワークフローを拡張するビルド システムは何ですか?

Go の開発ワークフローを拡張するビルド システムは何ですか?

2024 年 11 月 8 日に公開
ブラウズ:890

What Build Systems Extend the Development Workflow for Go?

Go ビルド システム: 開発ワークフローの拡張

Go は、そのシンプルさと同時実行性が高く評価されているプログラミング言語で、広く受け入れられています。開発プロジェクトが進化するにつれて、構築、テスト、展開プロセスを自動化するための堅牢なビルド システムの必要性が重要になります。しかし、どのようなビルド システムが Go をサポートし、その機能を強化するのでしょうか?

Makefile: 初期 Go ビルド システム

伝統的に、Go はソース ディストリビューションにバンドルされている Makefile に依存してきました。 $GOROOT/doc にあるこの Makefile は、さまざまなビルド タスクを容易にします。しかし、Go コミュニティは、Go の機能を拡張する代替ビルド システムを模索してきました。

Go のビルド オプションの拡張

いくつかの人気のあるビルド システムが Go をサポートするように適応され、追加の機能を提供しています。機能と柔軟性。 Python ベースのビルド ツールである SCons は、広く使用されている代替手段です。もう 1 つの人気のあるビルド システムである 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