में बड़े सीएमके परियोजना लोडिंग धीमी है, मैं उन पर सीएलओएन का उपयोग करने के लिए कई बड़े मेकफ़ाइल-आधारित अनुप्रयोगों को सीएमके में परिवर्तित करने की कोशिश कर रहा हूं।सीएलओएन
हर बार जब मैं प्रोजेक्ट खोलता हूं, हालांकि, सीएमओएन को सीएमके परियोजना को लोड करने में लगभग एक घंटे का समय लगता है, जबकि स्मृति संकेतक "1987 एमबी के 750" से नीचे रहता है। मैं मानता हूं कि मैं एक सीएमके नौसिखिया हूं, इसलिए मुझे लगता है कि मेरी सीएमके लिस्ट.txt फ़ाइलें इष्टतम नहीं हैं।
असल में प्रत्येक एप्लिकेशन के पास अपनी निर्देशिका में कुछ विशिष्ट स्रोत कोड होता है और कुछ 'सामान्य' पुस्तकालयों का उपयोग कर रहा है। मैं GitHub पर साझा करने के लिए एक संरचना की दृष्टि से बराबर परियोजना बना दिया है:
https://github.com/pe-st/zalophus/tree/master/tree
कि इस परियोजना में एक आवेदन पत्र 'एक' और दो आम librairies 'एटलस' और 'ग्रीटिंग' है। प्रत्येक पुस्तकालय में Googletest परीक्षणों के साथ एक फ़ोल्डर 'परीक्षण' होता है।
+ common
| + atlas
| | + test
| + greeting
| + test
+ a
हकीकत में वहाँ उन सभी को बूस्ट और मानक पुस्तकालय, और कुछ नहीं का उपयोग कर, कुल में लगभग 1500 सीपीपी और .hpp फाइलों के साथ आम नीचे एक दर्जन से अधिक पुस्तकालयों के बारे में कर रहे हैं।
जिथब पर प्रोजेक्ट की मास्टर शाखा में मेरा पहला प्रयास है, जहां सभी निर्देशिकाओं को 'add_subdirectory' का उपयोग करके संदर्भित किया जाता है। दूसरा प्रयास (with_ext शाखा में) निर्भर पुस्तकालयों के लिए ExternalProject_Add का उपयोग कर रहा है। जब मैं 'ग्रीटिंग' से परीक्षणों को संकलित/चलाता हूं तो यह निर्भरता 'एटलस' भी सही ढंग से संकलित करता है। हालांकि यह 'एटलस' के परीक्षणों को संकलित/चलाने की भी कोशिश करता है (जो विफल रहता है ...) और मैं परीक्षण के बिना 'एटलस' को संकलित करने के तरीके को कैसे काम नहीं कर सका।
तो मुझे दिखाए गए स्रोत कोड बेस के साथ काम करने के लिए सीएमके परियोजना को बेहतर तरीके से कैसे डिजाइन करना चाहिए?
(नोट: मैं JetBrains Clion मंच में एक ही प्रश्न पूछा है भी: https://intellij-support.jetbrains.com/hc/en-us/community/posts/207559245-Large-CMake-Project-loading-is-slow-in-CLion-)
मैंने इसे कभी नहीं समझा, लेकिन आप सही हैं। यदि मैं लगातार दो बार परियोजना लोड करता हूं, तो दूसरी बार तेज़ होता है (पहली बार: सीएमके पीढ़ी 935 के दशक, 270 के निर्माण का प्रतीक; दूसरी बार: सीएमके पीढ़ी 49, निर्माण प्रतीक 177 एस)। यह अच्छा होगा अगर दूसरी बार प्रतीक लोड करने में और भी कैशिंग हो सकती है ... लेकिन एक समस्या बनी हुई है: क्योंकि पुस्तकालयों का स्रोत कोड अक्सर बदलता है, कैशिंग बहुत मदद नहीं करता है। मैं अभी भी निर्देशिकाओं को पुस्तकालयों के रूप में चिह्नित करने में देखूंगा ... – pesche