User Tag List

Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 16

Tema: Tutorial: SDL - Semi-Ameba MAKEFILE HowTo

  1. #1

    Fecha de ingreso
    Jun 2004
    Ubicación
    Granada
    Mensajes
    673
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    1
    Thanked in
    Agradecido 1 vez en 1 post

    Post Tutorial: SDL - Semi-Ameba MAKEFILE HowTo

    Bien lo primero que os preguntareis seguramente es:

    ¿Para que sirve un Makefile?

    Un Makefile contiene todos los pasos para generar (compilar) nuestro programa. Un programa se compone basicamente de librerias (que son un conjunto de utilidades que facilitan nuestra labor), nuestros ficheros del programa y de como debe "montar" nuestros ficheros (optimizaciones).

    Quiero preparar mi proyecto ¿que ficheros necesito para compilarlo?

    Lo mejor que podemos hacer es tomar como base alguno de los ejemplos que tenemos en el directorio de GP32, por ejemplo: FONTS.

    Lo primero sera crearnos un directorio para nuestro proyecto, que nosotros aqui llamaremos EJEMPLO. Luego de FONTS vamos a coger prestado: "Makefile.win32", "Makefile", "crt0x_gp32.s" y "arm-gp32bin.x".

    Ya lo siguiente que necesitariamos seria que codearas un poco y lo guardaras con: "ejemplo.c" (o con el nombre que tu quieras).

    ¿que necesito conocer para compilar un programa sin problemas?

    Bien una vez tenemos nuestro programa codeado y el directorio preparado, necesitamos configurar nuestros MAKEFILEs para que compilen nuestro programa; ya sea para GP32 o para testearlo en Windows.

    Tenemos: "Makefile" que son las ordenes/instrucciones necesarias para GP32 y "Makefile.win32" que seria para generar la version de Win32 (windows).

    ¿Como creo mi Makefile propio?

    Bien para compilar cualquier programa basico solo necesitas modificar 2 secciones de cualquiera de estos dos MAKEFILEs:

    Para el Makefile.Win32:
    Código:
    TARGET	=	fonts.exe 
    
    [...]
    
    .CFILES	=	fonts.c
    En CFILES debeis poner todos los ficheros que componen vuestro programa, en el nuestro seria solo "ejemplo.c" y en TARGET sera el nombre final que tendra el programa.

    Quedando algo como:
    Código:
    TARGET	=	ejemplo.exe 
    
    [...]
    
    .CFILES	=	ejemplo.c
    Para GP32 tenemos alguna distincion pero que es practicamente igual, solo que quizas esta menos comodo...

    Para el Makefile (GP32):

    Código:
    MAPFILE		=	fonts.map
    TARGET_ELF	=	fonts.elf
    TARGET_BIN	=	fonts.gxb
    TARGET_FXE	=	fonts.fxe
    
    [...]
    
    .CFILES	=	fonts.c
    De aqui tenemos que cambiar el nombre de todos los TARGETs de arriba, substituyendo "font" por nuestro nombre, nosotros como de costumbre seguiremos con "ejemplo", lo demas es como siempre en CFILES poneis todos los ".c" que componen vuestro programa

    ¿Como compilo para GP32 o para Win32?

    Se compila para GP32, usando "make" y "make clean" para limpiar/borrar todo.
    Se compila para Win32, usando "make -f Makefile.Win32" y "make -f Makefile.Win32 clean", para limpiar/borrar todo.

    TODO: Como usar librerias?

    Un Saludo y espero que os resuelva algunas dudas, y podais empezar un proyecto básico.
    Última edición por D_Skywalk; 16/09/2005 a las 10:09
    Weblog sobre mis proyectos de linux, gp2x, emulación, desarrollo, abandonware...
    http://david.dantoine.org/


  2. #2

    Fecha de ingreso
    May 2005
    Mensajes
    1,013
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    ¿Que te parece mi makefile básico?
    # Base Makefile by newage

    # Para compilar poner la direccion propia del devKit de arm
    DEVKITARM = ...
    # Directorios de librerias estaticas ---------------------
    DIRKKC = ./kkcore/
    # Directorio de archivos objeto ---------------------------
    OBJDIR = ./.obj/
    OBJDIRKKC = $(DIRKKC).obj/

    # Herramientas --------------------------------------------
    ARM_ASM = $(DEVKITARM)bin/arm-elf-as
    #----------------------------------------------------------
    ARM_CC = $(DEVKITARM)bin/arm-elf-gcc
    ARM_CPP = $(DEVKITARM)bin/arm-elf-g++
    ARM_LD = $(DEVKITARM)bin/arm-elf-ld # No es necesario
    ARM_AR = $(DEVKITARM)bin/arm-elf-ar
    #----------------------------------------------------------
    CC = gcc
    CPP = g++
    LD = ld # El gcc ya nos ahorra el trabajo de llamar a ld
    AR = ar
    #----------------------------------------------------------
    EXTRA_CC = -ansi -Wall `sdl-config --cflags` \
    -I"$(DIRKKC)include" -DPC -g #gdb
    EXTRA_CPP = -ansi -Wall `sdl-config --cflags` \

    -I"$(DIRKKC)include" -DPC -g #gdb
    EXTRA_LD = -L"/usr/lib" -L"$(DIRKKC)" \
    -lSDL -lSDL_image
    #----------------------------------------------------------
    EXTRA_CPP_N = -ansi -I"$(DIRKKC)include"
    #----------------------------------------------------------
    LD_STATIC = -lkkcore
    EXTRA_AR = rcs
    #-----------------------------------------------------------
    VISOR = less
    #-----------------------------------------------------------

    default: all

    #-----------------------------------------------------------

    # Crea el directorio para los archivos objeto
    $(OBJDIR):
    mkdir $(OBJDIR)

    $(OBJDIRKKC):
    mkdir $(OBJDIRKKC)

    #-----------------------------------------------------------

    allarm: $(OBJDIR) $(OBJDIRKKC)
    @# Aun no disponible

    #----------------------------------------------------------------------

    all: $(OBJDIR) $(OBJDIRKKC)
    # Compilamos el codigo en CPP
    @# ----------------------------------------------------------------
    $(CPP) -c $(DIRKKC)tinyxml.cpp -o $(OBJDIRKKC)imagen.o $(EXTRA_CPP_N)
    $(CPP) -c $(DIRKKC)tinyxmlparser.cpp -o $(OBJDIRKKC)imagen.o $(EXTRA_CPP_N)
    $(CPP) -c $(DIRKKC)tinyxmlerror.cpp -o $(OBJDIRKKC)tinyxmlerror.o $(EXTRA_CPP_N)
    $(CPP) -c $(DIRKKC)tinystr.cpp -o $(OBJDIRKKC)tinystr.o $(EXTRA_CPP_N)
    @echo ! Compilado tinyxml
    @echo
    @# ----------------------------------------------------------------
    $(CPP) -c $(DIRKKC)imagen.cpp -o $(OBJDIRKKC)imagen.o $(EXTRA_CPP)
    $(CPP) -c $(DIRKKC)spripar.cpp -o $(OBJDIRKKC)spripar.o $(EXTRA_CPP)
    $(CPP) -c $(DIRKKC)gamerunner.cpp -o $(OBJDIRKKC)gamerunner.o $(EXTRA_CPP)
    @echo ! Compilada librería core de atlantis
    @echo
    @# ----------------------------------------------------------------
    $(CPP) -c main.cpp -o $(OBJDIR)main.o $(EXTRA_CPP)
    @echo ! Compilado atlantis
    # Hacemos Link de todo
    @echo
    @echo ! Haciendo link de todos los objetos
    $(AR) $(EXTRA_AR) $(DIRKKC)libkkcore.a $(OBJDIRKKC)*.o
    $(CC) -o higo $(EXTRA_LD) $(OBJDIR)*.o $(LD_STATIC)
    @echo
    @echo ! Programa construido satisfactoriamente
    @echo ! Pruebe: make gdb. Para depurar con insight

    #----------------------------------------------------------------------

    run: higo
    # Ejecutamos el programa
    @xterm -e ./higo

    #----------------------------------------------------------

    gdb: higo
    # Ejecutamos el programa
    @insight higo

    #----------------------------------------------------------

    clean:
    rm $(OBJDIR)*.o
    rm $(OBJDIRKKC)*.o

    #----------------------------------------------------------

  3. #3

    Fecha de ingreso
    Feb 2005
    Mensajes
    1,120
    Mencionado
    7 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    60
    Agradecer Thanks Received 
    84
    Thanked in
    Agradecido 50 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por newage
    ¿Que te parece mi makefile básico?
    Un poco cutre la parte de meter los nombres de los ficheros en todas las funciones en vez de definir un .CPPFILES o algo asi XDDD

  4. #4

    Fecha de ingreso
    May 2005
    Mensajes
    1,013
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por anibarro
    Un poco cutre la parte de meter los nombres de los ficheros en todas las funciones en vez de definir un .CPPFILES o algo asi XDDD
    hey!! yo soy un gran programador, rudimentario eso sí . Me gusta poner las cosas claras en el makefile, además así el make tiene menos tranajo que hacer para interpretarlo

    Me voy a empezar a currar un puzle isométrico, por ahora me toca hacer una clase de sprites y control de xml para los niveles. Hasta que no tenga GP2X me tengo que conformar con hacerlo en Linux mi querido linux
    Imágenes adjuntadas Imágenes adjuntadas  
    Última edición por newage; 16/09/2005 a las 13:16

  5. #5

    Fecha de ingreso
    Jun 2004
    Ubicación
    Granada
    Mensajes
    673
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    1
    Thanked in
    Agradecido 1 vez en 1 post
    Dios mio, con ese makefile me vas a asustar a la gente, con lo facil que es el que llevan los ejemplos de GP32 xD

    Pues eso, que no me asustes a los chavales

    Un Saludo
    Weblog sobre mis proyectos de linux, gp2x, emulación, desarrollo, abandonware...
    http://david.dantoine.org/


  6. #6

    Fecha de ingreso
    Feb 2004
    Ubicación
    Madrid
    Mensajes
    22,749
    Mencionado
    227 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    2,240
    Agradecer Thanks Received 
    1,902
    Thanked in
    Agradecido 1,185 veces en [ARG:2 UNDEFINED] posts
    D_Skywalk, muchas gracias tío, como te lo curras!!!
    A ver si me pongo a seguir con otro jueguillo que estoy haciendo, después de exámenes. Y este tuto me va a venir muy bien porque queria hacerme un makefile pero no sabia ni como ni na de na!
    Un besazo!

  7. #7

    Fecha de ingreso
    Mar 2003
    Ubicación
    Viña-Rock, de donde jamás debió salir el Metal Manía, ejem... ;-)
    Mensajes
    1,804
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    1
    Thanked in
    Agradecido 1 vez en 1 post
    Desde luego Sky hijo mío, yo no sé de donde sacas tiempo para hacer tutoriales tan tan trabajaos... Sobervio y muy práctico tío :-)

    Un Saludo, cuanto tiempo sin charlar eh tio,
    Venga cuídate y a disfrutar con los proyectos personales :-)
    ARCADEs '85-'92+/-, Spectrum, RANDOMIZE USR 1300, - POKE Espuerta el, Piñonero%256 -, Amiga 500, Alemania, 80x86, MS-DOS, VGA, Fasttracker II, inline asm {}, Compiladores Turbo de Borland, PCGPE, SWAG The Source Collection, Denthor's Asphyxia Tutorials, EAX, Daniel Navarro Medrano por su fabuloso DIV Games Studio, GB, GBC, GBA, GP32, NDS y tantas y tantas cosas más... :-)

  8. #8

    Fecha de ingreso
    Aug 2004
    Mensajes
    411
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Newage, a ti te van los programas en C++ usando las SDL en la GP32? Yo he conseguido crear el fxe y se ejecuta, pero no me pinta nada Y no hago ni new ni nada, solo llamadas minimas a las SDL para pintar una imagen en pantalla (y si, he comprobado hasta la saciedad los paths de los ficheros de las imagenes y estan bien).

  9. #9

    Fecha de ingreso
    May 2005
    Mensajes
    1,013
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por Gammenon
    Newage, a ti te van los programas en C++ usando las SDL en la GP32? Yo he conseguido crear el fxe y se ejecuta, pero no me pinta nada Y no hago ni new ni nada, solo llamadas minimas a las SDL para pintar una imagen en pantalla (y si, he comprobado hasta la saciedad los paths de los ficheros de las imagenes y estan bien).
    NO, yo no tengo la GP32 lo esoty haciendo en linux para luego pasarlo a la GP2X y he previsto el paso de CPP a C. Ya que las clsase son solo para empaquetar hi herencias ni nada complicado. Porque supongo que luego tocará pasrlo a C, pero es la costumbre

  10. #10

    Fecha de ingreso
    Sep 2005
    Mensajes
    5
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Estupenda la guia!!!!

    gracias D_skywalk

  11. #11

    Fecha de ingreso
    Aug 2004
    Mensajes
    411
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    *****, pues vaya v_v

  12. #12

    Fecha de ingreso
    Jun 2004
    Ubicación
    Granada
    Mensajes
    673
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    1
    Thanked in
    Agradecido 1 vez en 1 post

    Talking

    Cita Iniciado por Gammenon
    *****, pues vaya v_v
    Yo ahora mismo tengo el mismo problema que tu Gammenon, pero creo que es por el momento en el que hago flip, o de cuando hago el clearscreen... la verdad es que aun no se donde tengo la gamba

    Gracias a todos, la verdad que me pongo a hacerlos cuando no hay mucho que hacer en el curro, un saludo a esa misato-wapa y gracias a to2 ;D

    Un Saludo
    Weblog sobre mis proyectos de linux, gp2x, emulación, desarrollo, abandonware...
    http://david.dantoine.org/


  13. #13

    Fecha de ingreso
    Aug 2004
    Mensajes
    411
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Cuando se me ejecuto el fxe en C++ y no me aparecio nada tambien pense eso. Pero probe el fillrect y funciona, por lo que a en mi caso no es el flip, creo yo.
    A ver si alguien descubre como puñetas se puede hacer algo en C++, que usar C a palo seco se me hace muy duro a mi

  14. #14

    Fecha de ingreso
    Jun 2004
    Ubicación
    Valencia
    Mensajes
    2,122
    Mencionado
    33 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    11
    Agradecer Thanks Received 
    102
    Thanked in
    Agradecido 57 veces en [ARG:2 UNDEFINED] posts
    Tal vez sea una limitacion del port sdl a gp32, pq si lo haces para win o linux puedes usar c++ sin ningun problema

  15. #15

    Fecha de ingreso
    Aug 2004
    Mensajes
    411
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    En efecto, en windows (no tengo linux, lo admito! XD) me va perfectamente, y no me gustaria usar C++ y hacer un jueguillo pensando para la GP2X y luego que no haya forma de que rule...
    En fin, ya veremos, que no tengo nada de prisa

Página 1 de 2 12 ÚltimoÚltimo

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •