मुझे लगता है कि यदि कई कक्षाएं हैं तो संकलन समय नाटकीय रूप से बढ़ता है जब मैं प्रति वर्ग एक * .h और एक * .cpp फ़ाइल का उपयोग करता हूं। मैं पहले से ही precompiled हेडर और वृद्धिशील जोड़ने का उपयोग करें, लेकिन अभी भी संकलन समय बहुत लंबा है (बढ़ावा हाँ मैं का उपयोग करें;)सीपीपी अनुवाद इकाइयों की संख्या को कम करना एक अच्छा विचार है?
तो मैं निम्नलिखित चाल के साथ आया था:
- परिभाषित * सीपीपी गैर के रूप में फाइल -compilable
- परिभाषित * .cxx फ़ाइलों compilable रूप
- प्रति आवेदन मॉड्यूल एक * .cxx फ़ाइल जोड़ा, और उस में इस मॉड्यूल के सभी * सीपीपी फ़ाइलों #included।
तो 100+ अनुवाद इकाइयों के बजाय मैं केवल 8 अनुवाद इकाइयों के साथ समाप्त हुआ। संकलन समय 4-5 गुना छोटा हो गया।
डाउनसाइड्स यह है कि आपको सभी * .cpp फ़ाइलों को मैन्युअल रूप से शामिल करना होगा (लेकिन यह वास्तव में एक रखरखाव दुःस्वप्न नहीं है क्योंकि अगर आप कुछ लिंकर आपको याद दिलाना चाहते हैं), और कुछ वीएस आईडीई सुविधाएं काम नहीं कर रही हैं इस योजना के साथ, उदाहरण के लिए कार्यान्वयन आदि पर जाएं/स्थानांतरित करें
तो सवाल यह है कि, बहुत सी सीपीपी अनुवाद इकाइयां वास्तव में एकमात्र सही तरीका है? क्या मेरी चाल एक ज्ञात पैटर्न है, या शायद मुझे कुछ याद आ रहा है? धन्यवाद!
विजुअल स्टूडियो फ़ंक्शन-स्तरीय लिंकिंग का समर्थन करता है। हालांकि, यूनिक्स/लिनक्स के लिए अभी भी प्रासंगिक है। – MSalters
फ़ंक्शन-स्तरीय लिंकिंग केवल फ़ंक्शन या चर को बहिष्कृत करेगा? – sharptooth