Registrarse

[pokeruby] Solución bugs - Reducción tiempo compilación tras un "make clean"

Jason

PkPower déjame poner tildes en mi nick ¬¬
Hola!

Trabajando en mi proyecto más de una vez me he topado con bugs que se solucionan luego de hacer "make clean", pero es un rollo increíble tener que esperar a que recompilen todas las imágenes, por lo que traigo este tutorial.

Como requisito, tutorial de Lunos de introducción a pokéruby.

Makefile

Cuando compilamos C, una de las formas que usamos es
Código:
gcc -o exe ej.c
Directo en la consola, eso crea un archivo ejecutable "ej.exe" a partir del archivo "ej.c".

".c" es la extensión típica de los archivos de código del lenguaje C, al igual como en python tenemos los ".py" y en javascript los ".js".

Para compilaciones más complejas usualmente se automatiza con un archivo Makefile, al que le damos todos los parámetros para las opciones de la configuración que queramos.

En el Makefile creamos ciertos "patrones", por ejemplo:
Código:
all: $(ROM)
ifeq ($(COMPARE),1)
	@$(SHA1SUM) $(BUILD_NAME).sha1
endif
Que ejecutará
Código:
make $(ROM)
(con el valor de $(ROM) correspondiente)
y luego el if que allí aparece.

A lo que venimos.

Queremos crear un nuevo "patrón" de compilación para que "make clean" no elimine todas las cosas de los gráficos, entonces, si clean es
Código:
clean: tidy
	find sound/direct_sound_samples \( -iname '*.bin' \) -exec rm {} +
	$(RM) $(ALL_OBJECTS)
	find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' \) -exec rm {} +
	$(MAKE) clean -C tools/gbagfx
	$(MAKE) clean -C tools/scaninc
	$(MAKE) clean -C tools/preproc
	$(MAKE) clean -C tools/bin2c
	$(MAKE) clean -C tools/rsfont
	$(MAKE) clean -C tools/aif2pcm
	$(MAKE) clean -C tools/ramscrgen
	$(MAKE) clean -C tools/gbafix
Crearemos un "weak clean", "wclean" abajo de este.
Código:
wclean: tidy
	find sound/direct_sound_samples \( -iname '*.bin' \) -exec rm {} +
	$(RM) $(ALL_OBJECTS)
	$(MAKE) clean -C tools/gbagfx
	$(MAKE) clean -C tools/scaninc
	$(MAKE) clean -C tools/preproc
	$(MAKE) clean -C tools/bin2c
	$(MAKE) clean -C tools/rsfont
	$(MAKE) clean -C tools/aif2pcm
	$(MAKE) clean -C tools/ramscrgen
	$(MAKE) clean -C tools/gbafix


Ahora a probarlo.

Tras haber guardado, compilamos la rom como siempre, y luego hacemos:
Código:
make wclean
Y funciona :D

 

Kaktus

Miembro insignia
Miembro insignia
Respuesta: [pokéruby] Solución bugs - Reducción tiempo compilación tras un "make clean"

¡¡Excelente aporte!!

Algo bastante sencillo pero que sin duda va a quitar horas y horas de encima de esos tediosos make clean, yo por suerte aprendí a evitar directamente esos errores, pero nunca se sabe cuando te puede saltar uno por algo que hiciste sin darte cuenta, mis dies. :lovelon:
 
Arriba