كيف يمكنني تشمل IBM XLC قالب * ملفات .C في ملف التبعية جعل؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

لالمترجم XLC، رمز قالب يذهب في ملف .C *. ثم عندما يتم ترجمة البرنامج يستخدم وظائف القالب، مترجم يجد definisions القالب في ملف .C وinstantiates لهم.

ولكن المشكلة هي أن هذه الملفات .C ليست افتراضيا شملت عند إجراء -qmakedepend XLC لتوليد تبعيات بناء. حتى إذا قمت بتغيير واحدة من تلك الملفات .C، فلن بناء كل ما يعتمد عليه تلقائيا.

هل قام أي شخص العثور على حل جيد لهذه المشكلة؟

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

المحلول

وباختصار، فإن الجواب هو على الهجرة خارج باستخدام أداة tempinc وXLC ل.

والأداة المساعدة tempinc يتطلب منك إنشاء الملفات مع الإعلانات القالب في العنوان (.H أو .hpp) الملفات والتطبيقات الخاصة بك في ملف .C (هذا التمديد هو إلزامي). كما يجد المترجم التجسيدات القالب، فإنه سيتم وضع التجسيدات واضحة في ملف مصدر آخر في الدليل tempinc الخاص بك، مما اضطر الرمز إلى أن تتولد عنها. المترجم يعرف العثور على تعريفات قالب declered في foo.h في foo.c.

والمشكلة I المحددة غير أن بناة التبعية لا يعرفون هذا، وبالتالي لا يمكن أن تشمل ملفات .C بك في التبعيات.

مع النسخة 6.0 توصي باستخدام IBM الإعداد بدلا من -qtempinc -qtemplateregistry. بعد ذلك، يمكنك استخدام قالب نموذجي اقامة إدراج تعريفات القالب في ملف الرأس الخاص بك، والتي سوف تكون بعد ذلك مرئية للمكتشف التبعية، أو وضعها في ملف منفصل التي تتضمن # من ملف الرأس الخاص بك، وسوف تكون أيضا وجدت باستخدام الباحث عن التبعية.

إذا كنت المهاجرة من استخدام -qtempinc، يمكنك # تضمين مشروط ملف تطبيق قالب من ملف إعلان بك مع رمز مثل أدناه:

// end of foo.h
#ifndef __TEMPINC__          
#include "foo.c"       
#endif       

وهكذا سوف التعليمات البرمجية بناء وصلة إذا قررت أي وقت مضى للعودة إلى استخدام الإعداد -qtempic.

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