"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إنشاء العديد من ثنائيات حزمة Go في وقت واحد دون الحاجة إلى مجلد "cmd" عالي المستوى؟

كيفية إنشاء العديد من ثنائيات حزمة Go في وقت واحد دون الحاجة إلى مجلد "cmd" عالي المستوى؟

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

How to Build Multiple Go Package Binaries Simultaneously Without a Top-Level `cmd` Folder?

إنشاء حزم ثنائية متعددة في وقت واحد

يدور السؤال حول بناء حزم ثنائية متعددة في وقت واحد، كنصيحة افتراضية لاستخدام المستوى الأعلى يبدو أن مجلد cmd لا يعمل. يوضح مثال التعليمات البرمجية المقدم بنية مجلد معينة تمكن من إنشاء ثنائيات محددة بشكل صحيح.

لإنشاء كافة الثنائيات في خطوة واحدة باستخدام أمر go build، يوصى باستخدام شكل مختلف مما يلي:

cd $GOPATH/someProject
for CMD in `ls src/cmd`; do
  go build ./src/cmd/"$CMD"
done

يتكرر هذا الأمر عبر الحزم الموجودة في دليل src/cmd ويبني كل حزمة على حدة. سيتم تخزين الثنائيات الناتجة في أدلة الحزم الخاصة بها.

بدلاً من ذلك، إذا كنت لا ترغب في تثبيت الثنائيات في $GOPATH/bin، فيمكن استخدام برنامج نصي. هذه ممارسة شائعة في المشاريع مفتوحة المصدر، حيث تتعامل نصوص الإنشاء مع إنتاج ثنائي متعدد.

يمكن استخدام المثال النصي التالي:

cd $GOPATH/someProject
for CMD in `ls cmd`; do
  go build ./cmd/$CMD
done

يتكرر هذا البرنامج النصي من خلال الحزم الموجودة في دليل cmd ويتم تشغيله بناءً على كل منها. والنتيجة هي مجموعة من الثنائيات المخزنة في دلائل حزمة cmd الخاصة بها.

لمزيد من المرجع، توفر المشاريع الشائعة التالية أمثلة على البرامج النصية للبناء:

  • Grafana: https:// github.com/grafana/grafana/blob/master/build.go
  • الطور: https://github.com/coreos/torus/blob/master/Makefile
  • العلبة: https: //github.com/mholt/caddy/blob/master/dist/automate.go
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3