Cómo usar CCache para acelerar la compilación de la versión de Android Cocos2d-x
Nota: Los siguientes pasos sólo se aplican a Mac OS X.
Instalar
Usamos homebrew:
brew
instalar --HEAD ccache
O instalar desde el código fuente :
git
clon /jrosdahl/ccache.git
cd
ccache
./autogen. sh
./configure
make
make
instalar
cp
/usr/local/bin/ccache /usr/bin/
Nota: la ruta de instalación predeterminada es /usr/local/bin, necesitamos copiar ccache a /usr/bin/; de lo contrario, ndk-build no puede encontrarlo e informará un error
Si el terminal informa un error que dice que no se puede encontrar el encabezado automático, esto significa que primero debemos instalar automake:
brew
instalar automake
p>Pero si el terminal informa un error diciendo que no se puede encontrar brew, primero debemos instalar brew:
ruby
- e"$(curl
-fsSL
/Homebrew/homebrew/go/install)"
Asegúrese de que $PATH pueda identificar la ruta del ccache, ejecute el comando:
ccache
Si ve el mensaje de ayuda, felicidades, ¡la instalación se realizó correctamente!
Configurando el entorno de compilación en Android
Para usar ccache, debemos configurar las siguientes variables de entorno:
vim
~/. bash_profile
Agregue
las siguientes líneas:
exportar
USE_CCACHE=1
exportar
NDK_CCACHE=/usr/local/bin/ccache
Ejecute la línea de comando:
ccache
-M 10G
Este comando establecerá el tamaño de la caché en 10G. Por supuesto, si el espacio en el disco duro es lo suficientemente grande, también puedes configurarlo en 50G.
Luego, saltamos al directorio NDK. Si olvidas la ruta, puedes verificarla con el siguiente comando:
cuál
ndk-build<. /p >
Aquí está mi resultado:
//developer/android/ndk-r9b/ndk-build
Entonces mi NDK_ROOT es:
/developer/android/android-ndk-r9b
Abra el archivo: $NDK_ROOT/ build/core/default-build-commands.mk
Busque las siguientes secciones y agréguelas como sigue cccache:
ifneq
($(findstring ccc-analyzer,$(CC)),)
TARGET_ CC
= $ (CC)
else
TARGET_CC
= ccache $(TOOLCHAIN_PREFIX)gcc #Agregar soporte de ccache
endif
TARGET_CFLAGS
=
TARGET_CONLYFLAGS
=
ifneq
($(findstring c++-analyzer , $(CXX)),)
TARGET_CXX
= $(CXX)
más
TARGET_CXX
= ccache $(TOOLCHAIN_PREFIX)g++ #Agregar soporte para ccache
endif
TARGET_CXXFLAGS
= $(TARGET_ CFLAGS) - fno-exceptions -fno-exceptions - fno-exceptions -fno-exceptionsfno-exceptions -fno-rtti
Crea el juego cocos2d-x
Selecciona el directorio raíz de cocos2d-x y ejecuta:
python
build/android-build.py -p 10 cpp-tests
Crea una nueva ventana de terminal y ejecuta:
ccache
- s
Este comando imprimirá el estado de ccache, como se muestra a continuación:
cache
Directorio/Users/heliclei/.ccache
config primaria
/Users/heliclei/.ccache/ccache.conf
config secundaria
(solo lectura) /usr/local/etc/ccache. conf
cache
hit (directo) 13588
cache
hit (preprocesado) 11145
cache
falta 696
llamado
para
enlace 1
llamado
para
preprocesamiento14
preprocesador
error 1
no se puede
usar el encabezado precompilado 129
no
archivo de entrada 5
archivos
en caché 32222
tamaño de caché
5,4 GB
máximo
tamaño de caché 30,0 GB
Si el acierto de caché y el tamaño de caché son 0, significa que ccache no se está ejecutando y debemos volver a verificar la configuración.
Implementar en Xcode
Configurar el entorno ccache para Xcode (5.1) es un poco engorroso. Llamé a ccache pero no pareció mejorar la velocidad de compilación. Si tiene una buena solución a este problema, envíe un PR para este tutorial en github. Sin embargo, veamos cómo configurarlo:
Primero, agreguemos 2 macros personalizadas (macros definidas por el usuario) a las opciones de compilación de cocos2d_libs:
CC=$ (SOURCE_ROOT) /.../tools/xcode_ccache_wrapper
LDPLUSPLUS=$(DT_TOOLCHAIN_DIR)/usr/bin/clang++
Luego, necesitamos encontrar la ruta $(COCOS2dX_ROOT)/tools/ Crear un nuevo programa llamado xcode _ccache_wrapper script a continuación:
#! /bin/bash
exportar
CCACHE_CPP2=yes
exportar
CCACHE_LOGFILE=~/Desktop/ccache.log
exec
/usr/local/ bin/ccache /Applications/Xcode.app/Contents/Developer/Toolchain/XcodeDefault.xctoolchain/usr/bin/clang -Qunused-arguments
"$@"
¡La configuración está completa y podemos compilar fácilmente en Xcode!
Abra ccache.log para ver el estado de funcionamiento de la caché.