2010-04-22 13 views
10

मुझे सी ++ में लिखे गए ऐप के कई संस्करणों को संकलित करना है और मुझे लगता है कि प्रक्रिया को तेज करने के लिए सीसीएच का उपयोग करना है।चुनिंदा सीसीएच का उपयोग कैसे करें?

ccache howtos के उदाहरण हैं जो जीसीसी, जी ++ नामक सिम्लिंक बनाने का सुझाव देते हैं और सुनिश्चित करते हैं कि वे मूल जीसीसी बाइनरी से पहले पीएटीएच में दिखाई देते हैं, इसलिए इसके बजाय ccache का उपयोग किया जाता है।

अब तक इतना अच्छा है, लेकिन मैं इस विशेष ऐप को संकलित करते समय केवल सीसीएच का उपयोग करना चाहता हूं, हमेशा नहीं।

बेशक, मैं एक शेल स्क्रिप्ट लिख सकता हूं जो हर बार जब मैं ऐप संकलित करना चाहता हूं तो इन सिम्लिंक को बनाने का प्रयास करूंगा और ऐप संकलित होने पर उन्हें हटा दूंगा। लेकिन यह मेरे लिए फाइल सिस्टम दुरुपयोग की तरह दिखता है।

क्या सीसीएसी का चयन करने के बेहतर तरीके हैं, हमेशा नहीं?

एकल स्रोत कोड फ़ाइल के संकलन के लिए, मैं मैन्युअल रूप से जीसीसी के बजाय सीसीएसी को मैन्युअल रूप से कॉल कर सकता हूं और किया जा सकता है, लेकिन मुझे एक जटिल ऐप से निपटना होगा जो कई स्रोत कोड फ़ाइलों के लिए स्वचालित बिल्ड सिस्टम का उपयोग करता है।

उत्तर

3

क्या ओएस? लिनक्स? सीसीएच के अधिकांश पैक किए गए संस्करण पहले से ही उन सिम्लिंक को एक निर्देशिका में डालते हैं, उदाहरण के लिए मेरी फेडोरा मशीन पर वे/usr/lib64/ccache में रहते हैं।

तो आप बस

PATH=/usr/lib64/ccache:${PATH} make 

जब आप ccache साथ का निर्माण करना चाहते कर सकता है।

अधिकांश पैकेज /etc/profile.d/ में एक फ़ाइल भी स्थापित करते हैं जो स्वचालित रूप से ऊपर के रूप में पाथ में जोड़कर सीसीएसी को सक्षम बनाता है।

यदि आपके सिस्टम पर यह मामला है, तो अपने पर्यावरण में ccache को अक्षम करने के लिए (man ccache देखें) - ccache अभी भी चलाया जाएगा, लेकिन वास्तविक कंपाइलर को बस कॉल करेगा।

+0

CCACHE_DISABLE सेट करना ठीक लगता है, धन्यवाद। –

1

सिम्लिंक बनाने का विकल्प सी ++ कंपाइलर के रूप में सी संकलक और ccache g++ के रूप में स्पष्ट रूप से ccache gcc का उपयोग करना है। उदाहरण के लिए, यदि आपके मेकफ़ाइल कंपेलरों को निर्दिष्ट करने के लिए चर CC और CXX का उपयोग करता है, तो आप make CC="ccache gcc" CXX="ccache g++" के साथ बना सकते हैं या इसे कॉन्फ़िगर समय (./configure CC="ccache gcc" CXX="ccache g++") पर सेट कर सकते हैं।

export CCACHE_DISABLE=1 

अधिक जानकारी के लिए:

9
बाईपास ccache सिर्फ करने के लिए

man ccache 

...

 If you set the environment variable CCACHE_DISABLE then ccache will just call the real 
     compiler, bypassing the cache completely. 

...

संबंधित मुद्दे