Запускаем в рабочей папке С:\build консоль Git Bash с правами администратора и последовательно выполняем:
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.
zet@ZET /c/build $ cd ccache*
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
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, то можно воспользоваться готовым компектом отсюда.