User Tag List

Resultados 1 al 10 de 10

Tema: Instalar app creada por mi en linux (ubuntu) no encuentra los graficos

  1. #1

    Fecha de ingreso
    Aug 2003
    Ubicación
    Madrid (Getafe)
    Mensajes
    13,899
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    221
    Thanked in
    Agradecido 164 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    2

    Instalar app creada por mi en linux (ubuntu) no encuentra los graficos

    Hola chicos,

    Lo primero es que esto no es de GP2X, pero no encuentro un subforo mas apropiado, si algun
    moderador considera que debe moverse que me de un toque o lo que sea

    Estoy haciendo mi propia aplicacion/juego para el trabajo fin de carrera, la tengo casi terminada, ahora estoy en la fase de empaquetado.

    Habia pensado hacer un paquete debian-ubuntu, eso lo tengo mas o menos controlado pero tengo un problema.

    Alguien tiene alguna experiencia de en donde esta "recomendado" instalar en debian/ubuntu cada cosa? binario, datos, graficos.

    Por los ejemplos que he visto por ahi:
    - /usr/games/mijuego (el binario)
    - /usr/share/games/mijuego/*.png (los graficos, datos, configs, etc)

    Ahora el tema es que mi binario esta "acostumbrado" a coger los graficos "de su propio directorio".

    Que me recomendais para que la version de desarrollo tire "de los graficos de su propio directorio" y la version "instalada" tire de /usr/share/games/mijuego/*.png? Habia pensado algo que he visto por ahi que compila con una opcion tipo "--prefix=/usr/share/games" sabeis como funciona eso del prefix y si es la mejor opcion?

    Aiken

  2. #2

    Fecha de ingreso
    May 2004
    Ubicación
    Coslada, Madrid
    Mensajes
    13,257
    Mencionado
    2 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    12
    Thanked in
    Agradecido 9 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    6
    Yo pondría los gráficos en el propio directorio de tu juego, el /usr/share a mi me parece que está para cosas compartidas por varias aplicaciones (como los gráficos de iconos que usan varios gestores de ventanas), así que no me complicaría y lo pondría con el juego.

  3. #3

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,578
    Mencionado
    94 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    452
    Agradecer Thanks Received 
    2,051
    Thanked in
    Agradecido 1,078 veces en [ARG:2 UNDEFINED] posts
    Yo en cambio los pondría en /usr/share o /usr/lib porque todo el mundo los pone allí Una idea es utilizar defines en tiempo de compilación:

    en tu código:

    Código:
    #ifdef DEVELOPMENT
        char *datadir="./";
    #else
        char *datadir="/usr/shared/mijuego";
    #endif
    Y en un Makefile simple:

    Código:
    dev:
       gcc patatá -DDEVELOPMENT mijuego.c patatí
    
    final:
       gcc patatá mijuego.c patatí
    Si eres más ordenado y usas CFLAGS y esas cosas, compilas la versión de desarrollo con make dev="1" y al principio del Makefile escribirás:

    Código:
    ifdef dev
      CFLAGS=-DDEVELOPMENT patatá
    else
      CFLAGS=patatá
    endif
    Última edición por juanvvc; 25/05/2008 a las 15:28

  4. #4

    Fecha de ingreso
    Aug 2005
    Mensajes
    9,463
    Mencionado
    0 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    4
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Yo lo que no entiendo es como hacer para que funcione con los archivos de datos en el sitio donde le de la gana a la distribución. No sé como se hace de forma "genérica"

    Por ejemplo una distro usa /usr/share y otra usa /opt/mijuego y alguien quiere instalar el juego en /usr/local/share, aunque supongo que esto será cosa de las autotools y el --prefix

  5. #5

    Fecha de ingreso
    Aug 2003
    Ubicación
    Madrid (Getafe)
    Mensajes
    13,899
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    221
    Thanked in
    Agradecido 164 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    2
    Cita Iniciado por juanvvc Ver mensaje
    Yo en cambio los pondría en /usr/share o /usr/lib porque todo el mundo los pone allí Una idea es utilizar defines en tiempo de compilación:
    si, tambien he visto algunos que lo ponene en /usr/lib/


    Aiken
    < - >
    Cita Iniciado por efegea Ver mensaje
    Por ejemplo una distro usa /usr/share y otra usa /opt/mijuego y alguien quiere instalar el juego en /usr/local/share, aunque supongo que esto ser&#225; cosa de las autotools y el --prefix
    eso estaria guay, pero no se si eso existira lo has visto hacer en alguna aplicacion? yo lo del prefix lo he visto usar para diferentes distros pero yo creo que era porque era para compilarlo para una distro u otra, es decir que usan el --prefix de la misma forma que estamos diciendo nosotros lo del define, es decir para compilarlo de una manera u otra.

    una vez compilado ya va fijo, o eso creo,

    tambien puede ser que el prefix lo usen en el make install? y quizas lo que hacen es modifican algun archivo donde va la configuracion del binario o algo asi?

    Aiken
    Última edición por Aiken; 25/05/2008 a las 16:47 Razón: Edición automática anti doble-post.

  6. #6

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,578
    Mencionado
    94 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    452
    Agradecer Thanks Received 
    2,051
    Thanked in
    Agradecido 1,078 veces en [ARG:2 UNDEFINED] posts
    El --prefix se da como argumento en el configure. As&#237; las autotools generar&#225;n autom&#225;ticamente el Makefile de la manera que te he puesto arriba. Las autotools es un foll&#243;n de narices que nunca he entendido, pero t&#250; ver&#225;s si quieres usarlas

  7. #7

    Fecha de ingreso
    Aug 2003
    Ubicación
    Madrid (Getafe)
    Mensajes
    13,899
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    221
    Thanked in
    Agradecido 164 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    2
    Al final he decidido que el valor del directorio se le pase como parametro al compilar, es decir que hay en el compilado, como parametro del gcc, algo como :

    Código:
    -DDATADIR=/usr/share/games/mijuego
    eso si, menuda movida he tenido para poder "concatenar" ese valor con el nombre del png.

    es decir yo queria algo tan facil como fopen(DATADIR+"/logo.png") o algo asi, pero no habia forma.

    Por si le sirve a alguien, aqui os dejo como he encontrado por ahi para poder utilizar el valor del define como parte de un string concatenado.

    Código:
    #ifndef DATADIR
    #define DATADIR "."
    #endif
    #define DEFSTRINGIFY(x) #x
    #define DEFTOSTRING(x) DEFSTRINGIFY(x)
    
    #define DATAFOLDER(x)	DEFTOSTRING(DATADIR)"/"x
    y luego en cualquier parte del codigo se puede usar:

    Código:
    IMG_Load(DATAFOLDER("gfx/migrafico.png"));
    Lo mismo hay una forma mas sencilla de hacerlo sin hacerlo tan sofisticado pero
    esta parece que funciona

    PD. Ah se me olvidaba, lo que hacen los defines es que usan "." (el directorio) si no se ha definido nada, o si se ha definido un DATADIR pues buscan las imagenes en el directorio definido.

    fijaros que curiosa es esta linea
    Código:
    #define DEFTOSTRING(x) DEFSTRINGIFY(x)
    que no hace nada, solo lo renombra, pero si no lo haces asi en "dos pasos" el preprocesador te manda a freir gargaras

    Bueno, espero que le sirva a alguien
    Aiken
    < - >
    Cita Iniciado por juanvvc Ver mensaje
    El --prefix se da como argumento en el configure. Así las autotools generarán automáticamente el Makefile de la manera que te he puesto arriba. Las autotools es un follón de narices que nunca he entendido, pero tú verás si quieres usarlas
    ya, estoy usando las autotools porque uso una plantilla de proyecto del KDevelop, y usa automaticamente las autotools, pero he tenido mas de un problema luego cuando he querido modificar algo "a mano", porque no sabia modificarlo en las autotools y a mano me hacia conflicto con las autotool

    PD. Son como todo lo automatico, mas comodo mientras funciona, pero luego como no funcione arreglarlo o modificarlo te da por el ojete

    Aiken
    Última edición por Aiken; 25/05/2008 a las 18:57 Razón: Edición automática anti doble-post.

  8. #8

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,578
    Mencionado
    94 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    452
    Agradecer Thanks Received 
    2,051
    Thanked in
    Agradecido 1,078 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por Aiken Ver mensaje
    es decir yo queria algo tan facil como fopen(DATADIR+"/logo.png") o algo asi, pero no habia forma.
    Qu&#237;tale el signo de suma: fopen(DATADIR "/logo.png")

    Su usas esta soluci&#243;n no te olvides de poner la cadena entre comillas. En la shell tienes que escaparlas:
    -DDATADIR=\"/usr/share/games/mijuego\"

    En un Makefile no hace falta escaparlas (creo recordar)
    Última edición por juanvvc; 25/05/2008 a las 19:09

  9. #9

    Fecha de ingreso
    Aug 2003
    Ubicación
    Madrid (Getafe)
    Mensajes
    13,899
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    221
    Thanked in
    Agradecido 164 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    2
    Cita Iniciado por juanvvc Ver mensaje
    Quítale el signo de suma: fopen(DATADIR "/logo.png")
    eso fue lo segundo que pense, pero las comillas (que no tenia DATADIR) me daban por saco. Como buen español, en lugar de ponerle las comillas a DATADIR, lo que hice fue buscar una forma de usar ese valor directamente que no me parecia que fuera que estaba pidiendo algo tan fuera de lo habitual no? y al final acabe con eso que os he puesto arriba.

    la verdad es que no se que es peor, si esas 3-4 lineas de defines o escapar las comillas, supongo que lo segundo es mejor, pero ya que lo tengo hecho y queda "sofisticado" lo voy a dejar asi

    Por cierto, hasta hoy no habia descubierto esa "concatenacion" de C/C++ digo la de fopen(DATADIR "/logo.png"), es un poco extraña no? de donde viene de C# o C++? o es el preprocesador?

    Aiken

  10. #10

    Fecha de ingreso
    Mar 2007
    Ubicación
    Barna
    Mensajes
    10,578
    Mencionado
    94 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    452
    Agradecer Thanks Received 
    2,051
    Thanked in
    Agradecido 1,078 veces en [ARG:2 UNDEFINED] posts
    La concatenaci&#243;n es de C, y es la forma de concatenar cadenas largas est&#225;ticas:

    Código:
    mensaje=
    "hola mundo\n"
    "azul y verde"; // correcto
    mensaje="hola" "mundo"; // correcto
    mensaje1="hola"; mensaje2="mundo"; mensaje=mensaje1 mensje2; //incorrecto

Permisos de publicación

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