c - Include a header file for parsing of all other files with Doxygen preprocessor -


मैं एक h फ़ाइल से #define s को शामिल करना चाहता हूं


परियोजना पृष्ठभूमि:

मेरी सी प्रोजेक्ट में शीर्ष लेख फ़ाइल config.h < / Code> उस पर बिल्ड कमांड है।

यह उसी बिल्ड कमांड पर एक लक्ष्य MODEL_A भी परिभाषित करता है।

config.h लक्ष्य के आधार पर परिभाषित करता है बनाता है ( MODEL_A के लिए के रूप में MODEL_B के लिए नहीं परिभाषित करता है की एक ही सूची) बनाया जा रहा:

  #if परिभाषित (MODEL_A) #define HAS_FUNCTIONALITY_1 #define HAS_FUNCTIONALITY_2 #elif परिभाषित (MODEL_B) #define HAS_FUNCTIONALITY_3 #define HAS_FUNCTIONALITY_4 #endif   

Doxygen के साथ मेरा मुद्दा:

मैं Doxygen के साथ प्रलेखन उत्पन्न करने का प्रयास करता हूं। मेरे पास Doxyfile में है:

  # config.h से INPUT सहित आवश्यक लगता है इनपुट = ./source/config.h \ ./source ENABLE_PREPROCESSING = हाँ MACRO_EXPANSION = हाँ EXPAND_ONLY_PREDEF = नहीं INCLUDE_PATH = ./source INCLUDE_FILE_PATTERNS = ./source/config.h पूर्वनिर्धारित = MODEL_A   

कोड है कि परिभाषित करता है पर निर्भर है HAS_FUNCTIONALITY_x दस्तावेज में, शामिल नहीं है के रूप में यदि पूर्वप्रक्रमक config.h में परिभाषित करता है नहीं मिला।


मेरा निष्कर्ष अब तक:

मैं Doxygen -d प्रीप्रोसेसर की मदद से पूर्वप्रक्रमक उत्पादन का निरीक्षण किया, और कहा कि देख सकते हैं:

  • । / Source / config.h को पहले, और सही MODEL_A के अनुसार पार्स किया गया था (मैं सही #defines < / कोड> पूर्वप्रक्रमक आउटपुट में)। #define HAS_FUNCTIONALITY_1 पूर्वप्रक्रमक उत्पादन में आंकड़े।
  • सी फ़ाइलें जो HAS_FUNCTIONALITY_1 पर निर्भर की पूर्व प्रसंस्करण अधिनियम के रूप में अगर यह परिभाषित नहीं किया गया था

    Doxyfile का HAS_FUNCTIONALITY_1 फ़ील्ड में परिभाषित PREDEFINED अपेक्षित के रूप में कार्य करता है यह एक व्यावहारिक समाधान नहीं है, लेकिन फिर भी दिलचस्प है।


    मैं यह कैसे सुनिश्चित करूं कि #define पंक्ति जो पहले से config.h < / कोड> पूर्ववर्ती सी फाइलों पर पहले प्रसंस्करण कार्य करते समय परिभाषित किया जाता है?

    यह आपके लिए सी कोड को स्वयं दिखाने के लिए शायद फायदेमंद होगा। सामान्य तौर पर, डॉक्स्यजन एक मानक प्रीप्रोसेसर चलाता है- यानी, रेंडर किया गया कोड उसी तरह होना चाहिए, जैसे कि कंपाइलर ने इसे प्रीप्रोसेस किया। कोड में #define HAS_FUNCTIONALITY_1 के बराबर को प्राप्त करने के लिए - इसे परिभाषित करना होगा। मैं इसे डॉक्सिजन कॉन्फ़िगरेशन में जोड़ने के लिए अपनी अनिच्छा से समझता हूं कि इसे प्रोजेक्ट (या शायद मेकफील) में कहीं और परिभाषित किया गया है और यही कारण है कि वास्तविक कोड कार्य करता है जैसे कि यह परिभाषित किया गया था। यदि यह मामला है, तो मुझे अधिक प्रीप्रोसेसर ट्रिकरी के अलावा कोई सुगम समाधान नहीं मिला है या इसे डॉक्सिजन कॉन्फ़िग फाइल में जोड़ना है।

  • Comments

    Popular posts from this blog

    excel vba - How to delete Solver(SOLVER.XLAM) code -

    github - Teamcity & Git - PR merge builds - anyway to get HEAD commit hash? -

    ios - Replace text in UITextView run slowly -