एक सीकेक (C ++) रिपोजिटरी की निर्देशिका संगठन जिसमें कई परियोजनाएं हैं


12

मैं कुछ एकल (git) रिपॉजिटरी में संग्रहीत संबंधित लेकिन स्वतंत्र C ++ परियोजनाओं के संगठन पर कुछ सलाह देना चाहूंगा। परियोजनाओं में CMake का उपयोग किया जाता है।

एक सरल उदाहरण के लिए हम 2 परियोजनाओं की कल्पना करते हैं ए और बी, ए बी पर निर्भर करता है। ए विकसित करने वाले अधिकांश लोग पैकेजिंग सिस्टम के माध्यम से बी प्राप्त करेंगे। इस प्रकार वे केवल ए को संकलित करेंगे। हालांकि, हमें डेवलपर्स को ए और बी दोनों को खुद (और इसे स्थापित करने के लिए) अलग-अलग या एक साथ संकलित करने की अनुमति देनी चाहिए।

यहाँ एक प्रस्ताव है:

└── Repo1
    ├── CMakeLists.txt (1)
    ├── A
       ├── CMakeLists.txt (2)
       ├── include
          ├── aaa.h
          ├── aaaa.h
          └── CMakeLists.txt (3)
       └── src
           ├── aaa.cpp
           ├── aaaa.cpp
           └── CMakeLists.txt (4)
    ├── B
       ├── CMakeLists.txt (2)
       ├── include
          ├── bbb.h
          ├── bbbb.h
          └── CMakeLists.txt (3)
       └── src
           ├── bbb.cpp
           ├── bbbb.cpp
           └── CMakeLists.txt (4)
    └── test
        ├── CMakeLists.txt (5)
        └── testaaaa.cpp

(1) सभी परियोजनाओं (यदि कोई हो) के लिए सामान्य सेमीके चर को परिभाषित करें और उपनिर्देशिका शामिल करें। (2) परियोजना को परिभाषित करता है और परियोजना के आवश्यक cmake चर। (3) हेडर को स्थापित करने के लिए परिभाषित करता है और संकलन के लिए आवश्यक है। (4) लाइब्रेरी और बायनेरिज़ को कॉन्फ़िगर करता है। (5) परीक्षण निष्पादनयोग्य और परीक्षण-मामलों को कॉन्फ़िगर करता है।

जैसा कि मैं इसे समझता हूं, प्रत्येक परियोजना को एक XXXConfig.cmake फ़ाइल का उत्पादन करना चाहिए और इसे / usr / स्थानीय / शेयर / सेमीक में स्थापित करना चाहिए। CMake के डॉक्यूमेंट को पढ़ते समय इन फाइलों को लिखना काफी जटिल लगता है।

तुम क्या सोचते हो ? क्या संरचना समझ में आती है?

क्या आपके पास इस तरह की परियोजनाओं के काम करने का उदाहरण है?


मुझे लगता है कि आप यहां ओवरसोच कर सकते हैं - हमने सिर्फ एक आवेदन पत्र को एक भरोसेमंद पुस्तकालय परियोजना के साथ पेश किया और अब तक CMakeLists.txtप्रति परियोजना एक फ़ाइल से खुश हैं : A/CMakeLists.txt(ऐप) में B/CMakeLists.txt(पुस्तकालय) का उपयोग करना शामिल है add_subdirectory(...)
ssc

जवाबों:


12

काफी कुछ पढ़ने और परीक्षणों के बाद, मैंने CMake, CTest + boost.test, CPack और Doxygen के उपयोग को प्रदर्शित करने वाला एक बुनियादी डेमो C ++ प्रोजेक्ट बनाया है और अपने प्रश्न में उल्लिखित संगठन का अधिक या कम उपयोग कर रहा हूं।

परियोजना से पता चलता है कि सबप्रोजेक्ट निर्भरता कैसे बनाएं, पूरे रेपो या केवल एक सबप्रोजेक्ट को कैसे संकलित करें, पैकेज कैसे करें, परीक्षण कैसे करें और दस्तावेज़ीकरण कैसे करें।

यहां देखें: https://github.com/Barthelemy/CppProjectTemplate

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.