عمل کامپایل برنامه‌ها می‌تواند مدت زمان زیادی به طول بینجامد. به کمک ccache می‌توان عمل کامپایل را سرعت بخشیده و در زمان صرفه جویی کرد. نحوه کار ccache به این صورت است که وقتی شما برنامه‌ای را با استفاده از ccache کامپایل می‌کنید، نتیجه عملیاتِ کامپایل کش شده و در دفعات بعدی از آن استفاده می‌شود.

نصب

ccache را می‌توانید از طریق پورت های FreeBSD نصب کنید:

# cd /usr/ports/devel/ccache && make install clean

و همین طور از طریق بسته‌های باینری:

# pkg_add -r ccache

پیکربندی

خطوط زیر را به فایل /etc/make.conf اضافه کنید:

.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))
.if !defined(NOCCACHE)
CC:=${CC:C,^cc,/usr/local/libexec/ccache/world/cc,1}
CXX:=${CXX:C,^c\+\+,/usr/local/libexec/ccache/world/c++,1}
.endif
.endif

البته می‌توایند مقادیر CC و CXX را متناسب با کامپایلر مورد علاقه خود تنظیم کنید. اما به یاد داشته باشید که برای کامپایل هسته و world حتماً باید از GCC یا Clang استفاده کنید.

هشدار:
هر بار که مقادیر CC یا CXX را تغییر می‌دهید، باید devel/libtool را مجدداً نصب کنید.

اگر از csh یا tcsh استفاده می‌کنید، خطوط زیر را به فایل /etc/csh.cshrc اضافه کنید:

 setenv PATH /usr/local/libexec/ccache:$PATH
 setenv CCACHE_PATH /usr/bin:/usr/local/bin
 setenv CCACHE_LOGFILE /var/log/ccache.log

اگر از Korn shell و یا Bourne Shell استفاده می‌کنید خطوط زیر را به فایل /etc/profile اضافه کنید:

 export PATH=/usr/local/libexec/ccache:$PATH
 export CCACHE_PATH=/usr/bin:/usr/local/bin
 export CCACHE_LOGFILE=/var/log/ccache.log

به صورت پیش فرض، اندازه فضای کش ۱GB در نظر گرفته شده که به علت محدود بودن سیستم فایل /، بهتر است دایرکتوری کش را در سیستم‌فایلی به غیر از / در نظر بگیرید. برای انجام این کار بسته به پوسته ای که استفاده می‌کنید خطوط زیر رابه فایل‌های مربوطه اضافه کنید:

اگر از csh یا tcsh استفاده می‌کنید، خط زیر را به فایل /etc/csh.cshrc اضافه کنید:

setenv CCACHE_DIR "/usr/.ccache"

اگر از Korn shell و یا Bourne Shell استفاده می‌کنید خط زیر را به فایل /etc/profile اضافه کنید:

export CCACHE_DIR=/usr/.ccache

همان طور که گفته شد اندازه دایرکتوری کش به صورت پیش فرض ۱GB در نظر گرفته شده است. برای تغییر اندازه این دایرکتوری خطوط زیر را به فایل /etc/csh.cshrc اضافه کنید:

if ( -x /usr/local/bin/ccache ) then
  /usr/local/bin/ccache -M 512m > /dev/null
endif

البته به جای ۵۱۲m مقدار مورد نظر خود را قرار دهید.

در پایان، اگر در هنگام کامپایل به مشکلی برخوردید، متغیر NOCCACHE را مقدار‌دهی کرده و عملیات را دوباره شروع کنید:

make NOCCACHE=yes buildworld buildkernel