تحتاج قاعدة التبعية MAKEFILE التي يمكن التعامل مع الملفات المفقودة

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

  •  04-07-2019
  •  | 
  •  

سؤال

ونحن نستخدم GNU جعل لنظامنا. في نهاية makefiles لدينا، لدينا تشمل دعا Makedepends الذي يولد مجموعة من الملفات .D باستخدام -MM التبديل على دول مجلس التعاون الخليجي. نحن ثم تضمين ملف .D لكل ملف .CC استخدام التضمين $ (CXXFILES: .CC = .D) خط. ولكن عندما وحذف الملفات أو نقل الملفات، وdependancies خطوة فواصل وعلينا أن حذف الملفات .D يدويا (حتى جعل نظيفة لا تعمل بسبب تبعيات تفشل)

هل هناك طريقة لتوليد هذه الملفات التبعية. د أو تضمين هذه التبعية الملفات التي سيتم التعامل معها بأمان حذف ملف أو نقل .D؟

وتحرير: على سبيل المثال: لدي serial.cc وmakefiles توليد ملف serial.d التي لديها الاعتماد على buffer.h ولكن بعد ذلك تغييره حتى لا أحتاج buffer.h أي أكثر من ذلك، وأنا حذف عازلة .هيدروجين. في المرة القادمة أنا أركض جعل، وسوف خنق لأنه يتضمن الملف. د الذي لا يزال يجعل serial.o تعتمد على buffer.h.

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

المحلول

http://make.mad-scientist.net/papers / لصناعة السيارات في جيل متقدم التبعية وصفا لهذه المشكلة على وجه الدقة، واثنين من الطرق حوله. الأول هو مضللة بعض الشيء، ولكن "المتقدمة" وبقعة أساسا على.

نصائح أخرى

واحتمالان:

أولا، يمكنك إضافة قاعدة لماكيفيلي لتشغيل الخطوة التبعية:

.SUFFIXES: .d

%.d::
   makedepend_command_here

إذا لم يكن كذلك، ثم من قسم Last Resort الصفحة info لGNU جعل:

<اقتباس فقرة>   

وعلى سبيل المثال، عند اختبار   MAKEFILE، قد لا يهمني إذا كان   الملفات المصدر تحتوي على بيانات حقيقية، فقط   ان وجدت. فإنك قد تفعل   هذا:

 %::
         touch $@
     

وللتسبب في كل الملفات المصدر اللازمة   (كشرط مسبق) ليتم إنشاؤه   تلقائيا.

هل هذا العمل لإنشاء ملفات .d فارغة بالنسبة لك؟

إذا كنت تستخدم makepp مع --rm-stale الخيار، وسوف تلاحظ الملفات التي لم تعد يمكن البناء عليها وإزالتها . إذا كان هذا هو نموذج التطبيقي الطبيعي بالنسبة لك، يمكنك وضع هذا الخيار في .makepprc في جذور شجرة الإنشاء الخاصة بك، وسوف يكون دائما استخدامها.

ولكن بعد ذلك بالطبع makepp يعالج كل هذا الكشف الاعتماد على نفسها، لذلك لا تحتاج إلى فوضى MAKEFILE الخاص بك. بل لعله أفضل من نهجكم، لأنه يمكن أن تولد رؤوس اللازمة في الوقت المناسب لمترجم لالتقاط، حيث ستفشل gcc -MM.

هناك ما هو أكثر من ذلك بكثير لmakepp. إلى جانب القيام بجميع تقريبا أن GNU يمكن جعل، وهناك الكثير أكثر الأشياء المفيدة، ويمكنك حتى تمديد makefiles الخاص بك مع بعض البرمجة بيرل.

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