2010-04-22 15 views
10

C++ ile yazılmış bir uygulamanın birden çok sürümünü derlemek zorundayım ve işlemi hızlandırmak için ccache kullanmayı düşünüyorum.Seçici ccache nasıl kullanılır?

ccache howtos, gcc, g ++ etc adlı symlinks oluşturulmasını öneren ve orijinal gcc binary'lerinden önce PATH'de göründüklerinden emin olunan örneklere sahip olduğundan, bunun yerine ccache kullanılır.

Şimdiye kadar çok iyi, ama sadece bu özel uygulamayı derlerken, her zaman değil, ccache kullanmak istiyorum.

Elbette, uygulamayı derlemek istediğimde her seferinde bu sembolik bağlantıları oluşturmaya çalışacak bir kabuk komut dosyası yazabilirim ve uygulama derlendiğinde bunları silecektir. Ama bu bana dosya sistemi kötüye benziyor.

Her zaman değil, seçici olarak ccache kullanmanın daha iyi yolları var mı?

Tek bir kaynak kod dosyasının derlenmesi için, gcc yerine ccache'yi manuel olarak çağırabilir ve tamamlanabilir, ancak birden çok kaynak kodu dosyası için otomatik bir yapı sistemi kullanan karmaşık bir uygulama ile uğraşmak zorundayım.

cevap

3

Hangi İşletim Sistemi? Linux? Paketlenmiş çoğu ccache sürümü, bu linkleri zaten bir dizine koydu, örneğin Fedora makinede/usr/lib64/ccache'de yaşıyorlar. Eğer ccache ile inşa etmek istediğinizde

Yani sadece

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

yapabilirdi.

Paketlerin çoğu, /etc/profile.d/ dosyasına otomatik olarak ccache'i etkinleştirerek, yukarıdaki gibi PATH'ye ekleyerek bir dosya yükler.

Sisteminizde durum böyleyse, ortamınızda daha fazla bilgi için CCACHE_DISABLE=1 (bkz. man ccache) ayarını ccache'yi devre dışı bırakmak için ayarlayın - ccache hala çalışır, ancak gerçek derleyiciyi çağırır.

+0

CCACHE_DISABLE ayarı iyi görünüyor, teşekkürler. –

1

Symlinks oluşturma alternatifi, C derleyici olarak ccache gcc ve C++ derleyici olarak ccache g++ açık bir şekilde kullanmaktır. Örneğin, Makefile, derleyicileri belirtmek için CC ve CXX değişkenlerini kullanıyorsa, make CC="ccache gcc" CXX="ccache g++" ile kurabilir veya yapılandırma zamanında kurabilirsiniz (./configure CC="ccache gcc" CXX="ccache g++"). Daha fazla bilgi için

export CCACHE_DISABLE=1 

: Sadece baypas ccache için

9

man ccache 

...

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

...