"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > ما هي أنظمة البناء التي توسع سير عمل التطوير لـ Go؟

ما هي أنظمة البناء التي توسع سير عمل التطوير لـ Go؟

تم النشر بتاريخ 2024-11-08
تصفح:351

What Build Systems Extend the Development Workflow for Go?

Go Build Systems: توسيع سير عمل التطوير الخاص بك

Go، لغة البرمجة المشهورة ببساطتها وتزامنها، اكتسبت قبولًا واسع النطاق. مع تطور مشاريع التطوير، تصبح الحاجة إلى أنظمة بناء قوية لأتمتة عمليات البناء والاختبار والنشر أمرًا بالغ الأهمية. ولكن ما هي أنظمة البناء التي تدعم Go وتعزز قدراتها؟

Makefile: نظام Go Build الأولي

تقليديًا، اعتمدت Go على Makefile المجمعة مع توزيع مصدرها. يسهل ملف Makefile هذا، الموجود في $GOROOT/doc، مهام البناء المختلفة. ومع ذلك، فقد استكشف مجتمع Go أنظمة بناء بديلة لتوسيع وظائف Go.

توسيع خيارات بناء Go

تم تكييف العديد من أنظمة البناء الشائعة لدعم Go، مما يوفر المزيد الميزات والمرونة. تعتبر SCons، وهي أداة بناء تعتمد على Python، بديلاً مستخدمًا على نطاق واسع. تم أيضًا تنفيذ WAF، وهو نظام بناء شائع آخر، لـ Go.

مثال: البناء باستخدام SCons

إليك نموذج ملف SConstruct يوضح كيفية استخدام SCons مع Go:

الأقواس = {'amd64': '6'، '386': '8'، 'ذراع': '5'،} def gc(source, target, env, for_signature): الأهداف = الهدف[0] المصادر = ' '.join(str(s) لـ s في المصدر) الأعلام = '' للتضمين في env.get('GOINCLUDE', []): الأعلام = '-I %s ' % (تشمل) إرجاع '%s -o %s %s %s' % (env['GOCOMPILER']، الأهداف، العلامات، المصادر) def ld(source, target, env, for_signature): الأهداف = الهدف[0] المصادر = ' '.join(str(s) لـ s في المصدر) إرجاع '%s -o %s %s' % (env['GOLINKER']، الأهداف، المصادر) def _go_object_suffix(env, Resources): يعود "." الأقواس[env['ENV']['GOARCH']] def _go_program_prefix(env, Resources): إرجاع البيئة['PROGPREFIX'] def _go_program_suffix(env, Resources): إرجاع البيئة['PROGSUFFIX'] go_compiler = Builder(generator=gc, لاحقة =_go_object_suffix، src_suffix='.go'،) go_linker = Builder(generator=ld, البادئة =_go_program_prefix، لاحقة =_go_program_suffix،) # خلق البيئة استيراد نظام التشغيل env = البيئة(BUILDERS={'Go': go_compiler, 'GoProgram': go_linker}, ENV=os.environ،) Arch_prefix = الأقواس[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')) # بناء البرامج # قم بتعديل هذا ليناسب برنامجك main_package = env.Go(target='main', source='main.go') Program = env.GoProgram(target='program', source=[main_package])

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

يوفر Makefile لتوزيع Go المصدر أساسًا متينًا لبناء برامج Go . ومع ذلك، توفر أنظمة البناء البديلة مثل SCons وWAF ميزات ومرونة إضافية. من خلال تبني أنظمة البناء هذه، يمكن لمطوري Go تبسيط عمليات البناء الخاصة بهم، وتعزيز قدرات الاختبار، وتبسيط نشر المشروع.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3