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