التحقق من التبعية - كيفية تنظيف المشروع باستخدام ملفات تعريف سيئة

StackOverflow https://stackoverflow.com/questions/240061

سؤال

لدي مشروع C كبير جدًا يحتوي على العديد من ملفات C ورؤوسها المنفصلة وعشرات المساهمين.ليس لدى العديد من المساهمين معرفة قوية بالملفات الصنعية والتبعيات، مما يؤدي إلى مشكلة غير شائعة حيث يتعين عليك دائمًا تقريبًا "التنظيف" قبل أن تثق في "الإنشاء" لإنتاج الإخراج الصحيح.

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

نعم، لم يكن علينا أن نترك الأمر يذهب إلى هذا الحد.

نعم، نحن نقوم بتثقيف المطورين لدينا.

كالعادة، ليس لدينا الوقت لوقف كل شيء وإصلاحه باليد.

أعتقد أن هناك أدوات على هذا المنوال:

  • هل توجد أدوات تلقائية للمساعدة في إنشاء معلومات التبعية الصحيحة لمشروع موجود من ملفات C وH؟
  • هل توجد أدوات آلية لوصف معلومات التبعية وفقًا لملفات التعريف؟
  • هل هناك الكأس المقدسة لأداة لوصف الاختلافات بين شجرتي التبعية المذكورتين أعلاه؟

ولكن ما الذي يمكن/ينبغي فعله أيضًا لحل هذه المشكلة؟

شكرا لك مقدما...

-آدم

هل كانت مفيدة؟

المحلول

قد يكون من الأسهل التبديل من Make إلى أداة تكتشف التبعيات تلقائيًا.على سبيل المثال، سلبيات لا يجعلك تدرج التبعيات ولكن بدلاً من ذلك تقوم تلقائيًا بتوزيع الملفات التي يتم تجميعها والبحث عن التضمينات.يمكنك ببساطة تحديد الملفات التي يجب تجميعها والملفات التي تدخل في الملفات التنفيذية.سيكون تبديل أنظمة البناء أسهل نظرًا لأن المطورين لديك ليسوا خبراء حقيقيين.

البديل الآخر إذا التزمت بـ Make هو استخدام gcc -M خيار للكشف عن التبعيات تلقائيا.الجواب على اكتشاف تبعيات C تلقائيًا يحتوي السؤال على مثال لكيفية جعل ملفات makefiles الخاصة بك تكتشف التبعيات تلقائيًا بحيث لا تحتاج إلى تحديدها يدويًا.

نصائح أخرى

مجموعة التشغيل التلقائي والتكوين التلقائي:

http://sources.redhat.com/automake/automake.html#Introduction

أكثر:

http://sources.redhat.com/automake/automake.html#When-Autotools

هث

لدينا نفس المشكلة في مكان عملي.كان صندوق السيارة مكسورًا دائمًا بعد عمليات الدمج أو تسجيل الوصول.

أنشأنا أ التكامل المستمر إنشاء آلة تقوم بعملية التنظيف في حوالي 45 دقيقة مقارنة بحوالي ساعتين على جهاز تطوير. يقوم خادم التكامل باستقصاء مستودع SVN كل ساعتين لتسجيلات الوصول الجديدة ويبدأ عملية التنظيف.

وبهذه الطريقة، يمكننا مراقبة وقت تعطل البناء بدقة وإصلاحه على الفور.نحن نستخدم هدسون كخادم التكامل المستمر الخاص بنا، فهو مجاني ومفتوح المصدر، وهو عمل فني وسهل الإعداد للغاية.بالإضافة إلى أن واجهة المستخدم بديهية للغاية، ويحبها جميع المطورين الآخرين.

هتافات،

الطريقة الأساسية لحل هذه المشكلة هي السماح للمترجم بإنشاء معلومات التبعية لك تلقائيًا.شيء من هذا القبيل (بافتراض أن دول مجلس التعاون الخليجي، ستحتاج إلى التحقق من المترجم الخاص بك بحثًا عن خيارات مماثلة)

SOURCES=foo.c bar.c

%.d: %.c
    $(CC) $(CFLAGS) -MM $< >$@ 

include $(SOURCES:.c=.d)

يحتوي دليل GNU Make على فصل عن إنشاء المتطلبات الأساسية تلقائيًا.

يحرر:عادةً ما أوصي الناس بالبدء في الاستخدام CMake عندما يكون لديهم هذا النوع من القضية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top