2012-02-11 18 views
6

Soy un programador de C++ bastante nuevo. He hecho un juego muy simple usando bibliotecas SDL. Mi juego, naturalmente, usa algunas imágenes, sonidos y fuentes. He querido hacer una distribución del paquete, donde el usuario puede configurar & & hacer. No es que valga la pena distribuir este simple juego, pero quiero aprender cómo funcionan autoconf y automake. Busqué ejemplos en Internet, pero los tutoriales que pude encontrar muestran solo la instalación de un sencillo programa helloworld. No hablan de la instalación de archivos de datos, ni de cómo verificar si existen ciertas librerías para poder enlazarlas en tiempo de compilación. Y también, mi programa debe saber dónde se instala cada archivo para que pueda cargarlos. He profundizado en los manuales de automake y autoconf, pero son más como un material de referencia que como un recurso para los recién llegados. ¿Alguien podría explicar brevemente estos conceptos o llevarme a algún lugar donde pueda leer sobre ellos?Cómo empaquetar archivos de datos con autoconf y automake de GNU

+0

He encontrado que la mejor manera de usar autoconf/automake es encontrar un proyecto similar al suyo, ver lo que hacen y trabajar desde allí con la documentación. –

+0

Es posible que desee consultar el libro de John Calcote "Autotools: Guía de un practicante para GNU Autoconf, Automake y Libtool" –

+0

Pruebe el [Goat Book] (http://sourceware.org/autobook/) para obtener una introducción más legible a autotools. Tienen algunos proyectos de ejemplo de complejidad variable que muestran cómo hacer cosas más comunes con autotools. – ldav1s

Respuesta

13

He hecho algunas investigaciones al respecto, y he querido compartir lo que funcionó para mí. He creado una estructura de directorios como esto:

/ 
|->src/ 
| |-> Makefile.am 
| |-> main.cpp 
| |-> functions.cpp 
| 
|-> data/ 
| |-> Makefile.am 
| |-> somethings.png 
| |-> something.mp3 
|-> configure.ac 
|-> README 
|-> NEWS, AUTHORS etc. etc. 

He puesto todas mis imágenes, fuentes, sonidos, etc., en la carpeta de datos. Makefile.am en la carpeta de datos es el siguiente:

pkgdata_DATA = esound.wav \ 
       another.wav \ 
       apicture.png 

Simplemente muestra todos los archivos que necesitan estar terminan en el directorio de datos. El Makefile.am en la carpeta src aspecto:

bin_PROGRAMS = mygame 
mygame_SOURCES = main.cpp functions.cpp 
AM_CPPFLAGS = -DDATADIR=\"$(pkgdatadir)\" 

La parte importante aquí es AM_CPPFLAGS, que define DATADIR macro, de acuerdo con las opciones pasadas al script de configuración. Así entonces podemos utilizar esta macro en nuestros archivos de origen de la siguiente manera:

background = load_image(DATADIR "/background.png"); 

por lo que su programa se compilan saber dónde archivo de fondo debe residir en el sistema de archivos.

+0

¿Debería usar dist_pkgdata_DATA si desea distribuirlo? –

Cuestiones relacionadas