TLDR;
क्या आपको स्रोत जोड़ना चाहिए ? हाँ X को स्रोत जोड़ना
चाहिए ? DEPENDS
यहाँ क्यों आता है ...
दिन में वापस, संकलन समय एक मुद्दा था यहां तक कि छोटी परियोजनाएं भी थीं। अपने स्रोतों को संकलित करना और कैशिंग संकलक परिणामों के बारे में चिंता न करना निश्चित रूप से कुछ के लिए अपील कर रहा था। आपके लिए अप्रासंगिक पुस्तकालयों के लिए यह एक बिंदु है।
एक और महत्वपूर्ण संस्करण है। क्या आपको वास्तव में प्रत्येक पुस्तकालय को अलग से संस्करण की आवश्यकता है? हर एक के खिलाफ परीक्षण चलाएं? कई टीम के सदस्यों के बीच इसे वितरित करें? यदि आप करते हैं, तो पुस्तकालय महान हैं, और घूमने के लिए सुविधाजनक है, लेकिन फिर से, लगता है कि आप इस बारे में परवाह नहीं करते हैं।
यहां अंतिम बिंदु है, यह एक अतिरिक्त उपरि है, और स्रोत फ़ाइलों को छोड़ना आपके मामले में आसान है, जो पुस्तकालयों का उपयोग करने के बजाय स्रोतों में छोड़ने का एक बहुत मजबूत बिंदु देता है। जैसा कि आपने देखा है, एक बार जब आप एक एकल संकलक सेटिंग परिवर्तन करते हैं, तो आपको सभी निर्भरताओं का अन्यथा पीछा करना होगा।
मैं यह सब अनुभव से जानता हूं:
स्विफ्ट परियोजनाओं के लिए, मैं निश्चित रूप से फ्रेमवर्क (पुस्तकालयों) का उपयोग करता हूं और उनके खिलाफ लिंक करता हूं, क्योंकि एक्सकोड का उपयोग करना कॉन्फ़िगर करना आसान है। मुझे भी वास्तव में वहाँ के संस्करण, परीक्षण और डीकोपिंग की आवश्यकता है, इसलिए ऐसा है।
यूनिटी के लिए मोनो (C #) परियोजनाओं के लिए, मैंने प्रोजेक्ट को पुस्तकालयों में तोड़ने के हिप दृष्टिकोण के साथ शुरू किया, प्रत्येक को संकलित और परीक्षण किया, जो बहुत अच्छा था ... लेकिन एक बार जब मैंने पुस्तकालयों को एकता में गिरा दिया, तो सभी प्रकार के मुद्दे हुए। मोनो यूनिटी के हैक किए गए संस्करण से, कभी-कभी अलग-अलग व्यवहार के लिए, जब प्लेटफ़ॉर्म बदलते समय कोड प्रदर्शित करता है। सभी पुस्तकालयों का प्रबंधन करने के लिए यहां एक भी आईडीई नहीं होना एक सच्ची पीड़ा थी, इसलिए एकता के भीतर सभी स्रोतों को रखना उत्पादकता के लिए एक बड़ी जीत थी।
अंत में, आपके लिए सबसे अधिक प्रासंगिक, एक C ++ गेम प्रोजेक्ट, जिस पर मैंने काम किया। एक गेम इंजन, नेटवर्क रीयलटाइम क्लाइंट, नेटवर्क HTTP क्लाइंट, एआई और एक दृढ़ता स्टोर इस गेम के लिए लिखा गया था, बस क्लाइंट साइड पर। मैंने क्या चुना? क्लेयन + लाइब्रेरीज़। भले ही मैं पुस्तकालयों का उपयोग कर रहा था, लेकिन ऐसा महसूस नहीं हुआ कि मैं था। सभी स्रोत CLion IDE प्रोजेक्ट में थे, और CMakeLists की रचना करके, मैं सभी बिल्ड को ट्रिगर करने और उन्हें एक ही स्ट्रोक में लिंक करने में सक्षम था।
निष्कर्ष के रूप में , मैं कहूंगा कि पुस्तकालयों का उपयोग करना एक भविष्य-प्रूफ समाधान है, लेकिन आवश्यकता नहीं होने पर समय से पहले का अनुकूलन भी। जहाँ तक मुझे आपकी स्थिति से पता चलता है, MSVC से Xcode पर स्विच करने पर दर्द होगा यदि आप एकाधिक निर्माण लक्ष्य रखते हैं। तो, बस इसमें ड्रॉप करें और जितना संभव हो उतने अलगाव को बनाए रखें जब आपको पुस्तकालयों का उपयोग करने की आवश्यकता हो ।
पुनश्च: मैं इन दिनों docker के साथ एक समान दुविधा में हूं। क्या मुझे रचना करनी चाहिए? क्या मुझे स्थानीय स्तर पर बस चलाना चाहिए? .. आदि भी अमृत, क्योंकि यह आपको एक ही आवेदन के भीतर अनुप्रयोगों का निर्माण करने की अनुमति देता है .. क्या मुझे ऐसा करना चाहिए? या एप्लिकेशन को तथाकथित सूक्ष्म सेवाओं में अलग करें? ... आदि कोई चांदी की गोली नहीं है, हमेशा खुद को मापें, जैसा कि वाईएमएमवी।