====== Инструкция по сборке утилиты ccache ======
Запускаем в рабочей папке **С:\build** консоль **Git Bash** с правами администратора и последовательно выполняем:
===== git clone https://github.com/jmartens/ccache-win32.git =====
zet@ZET /c/build
$ git clone https://github.com/jmartens/ccache-win32.git
Cloning into 'ccache-win32'...
remote: Counting objects: 106, done.
remote: Compressing objects: 100% (87/87), done.
remote: Total 106 (delta 18), reused 106 (delta 18)
Receiving objects: 100% (106/106), 326.35 KiB | 240 KiB/s, done.
Resolving deltas: 100% (18/18), done.
===== cd ccache* =====
zet@ZET /c/build
$ cd ccache*
===== ./configure =====
zet@ZET /c/build/ccache-win32 (master)
$ ./configure
configure: Configuring ccache
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for a BSD-compatible install... ./install-sh -c
checking for ranlib... ranlib
checking for ar... ar
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking whether time.h and sys/time.h may both be included... yes
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for stdbool.h that conforms to C99... yes
checking for _Bool... yes
checking for sys/wait.h that is POSIX.1 compatible... no
checking ctype.h usability... yes
checking ctype.h presence... yes
checking for ctype.h... yes
checking pwd.h usability... no
checking pwd.h presence... no
checking for pwd.h... no
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/mman.h usability... no
checking sys/mman.h presence... no
checking for sys/mman.h... no
checking termios.h usability... no
checking termios.h presence... no
checking for termios.h... no
checking for asprintf... no
checking for gethostname... no
checking for getopt_long... yes
checking for getpwuid... no
checking for gettimeofday... yes
checking for mkstemp... no
checking for realpath... no
checking for snprintf... yes
checking for strndup... no
checking for utimes... no
checking for vasprintf... no
checking for vsnprintf... yes
checking for compar_fn_t in stdlib.h... no
checking for C99 vsnprintf... yes
checking for zlib >= 1.2.3... yes
checking for gzdopen in -lz... yes
checking for inline... inline
checking for extern inline... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
configure: now build ccache by running make
===== mingw32-make =====
zet@ZET /c/build/ccache-win32 (master)
$ mingw32-make
gcc -g -O2 -Wall -W -I. -I. -c -o main.o main.c
gcc -g -O2 -Wall -W -I. -I. -c -o ccache.o ccache.c
ccache.c: In function 'calculate_common_hash':
ccache.c:845: warning: implicit declaration of function 'strtok_r'
ccache.c:845: warning: assignment makes pointer from integer without a cast
ccache.c: In function 'parse_sloppiness':
ccache.c:1728: warning: assignment makes pointer from integer without a cast
gcc -g -O2 -Wall -W -I. -I. -c -o mdfour.o mdfour.c
gcc -g -O2 -Wall -W -I. -I. -c -o hash.o hash.c
gcc -g -O2 -Wall -W -I. -I. -c -o execute.o execute.c
execute.c: In function 'find_executable_in_path':
execute.c:244: warning: implicit declaration of function 'strtok_r'
execute.c:244: warning: assignment makes pointer from integer without a cast
execute.c:246: warning: assignment makes pointer from integer without a cast
gcc -g -O2 -Wall -W -I. -I. -c -o util.o util.c
gcc -g -O2 -Wall -W -I. -I. -c -o args.o args.c
args.c: In function 'args_init_from_string':
args.c:45: warning: implicit declaration of function 'strtok_r'
args.c:45: warning: assignment makes pointer from integer without a cast
gcc -g -O2 -Wall -W -I. -I. -c -o stats.o stats.c
gcc -g -O2 -Wall -W -I. -I. -c -o version.o version.c
gcc -g -O2 -Wall -W -I. -I. -c -o cleanup.o cleanup.c
gcc -g -O2 -Wall -W -I. -I. -c -o snprintf.o snprintf.c
gcc -g -O2 -Wall -W -I. -I. -c -o unify.o unify.c
gcc -g -O2 -Wall -W -I. -I. -c -o manifest.o manifest.c
gcc -g -O2 -Wall -W -I. -I. -c -o hashtable.o hashtable.c
gcc -g -O2 -Wall -W -I. -I. -c -o hashtable_itr.o hashtable_itr.c
gcc -g -O2 -Wall -W -I. -I. -c -o murmurhashneutral2.o murmurhashneutral2.c
gcc -g -O2 -Wall -W -I. -I. -c -o hashutil.o hashutil.c
gcc -g -O2 -Wall -W -I. -I. -c -o getopt_long.o getopt_long.c
gcc -g -O2 -Wall -W -I. -I. -c -o exitfn.o exitfn.c
gcc -g -O2 -Wall -W -I. -I. -c -o lockfile.o lockfile.c
gcc -g -O2 -Wall -W -I. -I. -c -o counters.o counters.c
gcc -g -O2 -Wall -W -I. -I. -c -o language.o language.c
gcc -g -O2 -Wall -W -I. -I. -c -o compopt.o compopt.c
gcc -g -O2 -Wall -W -I. -I. -c -o strtok_r.o strtok_r.c
gcc -g -O2 -Wall -W -o ccache.exe main.o ccache.o mdfour.o hash.o execute.o uti
l.o args.o stats.o version.o cleanup.o snprintf.o unify.o manifest.o hashtable.o
hashtable_itr.o murmurhashneutral2.o hashutil.o getopt_long.o exitfn.o lockfile
.o counters.o language.o compopt.o strtok_r.o -lm -lz
В результате компиляции видим в рабочей папке **С:\build\ccache-win32** готовый бинарный файл **ccache.exe**.
===== Готовая (бинарная) версия ccache =====
Если по каким-то причинам у вас не получается самостоятельно скомпилировать утилиту **ccache**, то можно воспользоваться готовым компектом **[[https://code.google.com/p/psi-dev/downloads/list?can=1&q=label%3Accache&colspec=Filename+Summary+Uploaded+Size+DownloadCount+UploadedBy|отсюда]]**.