2012-02-11 14 views
6

Sono un programmatore C++ piuttosto nuovo. Ho creato un gioco molto semplice usando le librerie SDL. Il mio gioco, naturalmente, utilizza alcune immagini, suoni e caratteri. Ho voluto fare una distribuzione del pacchetto, in cui l'utente può configurare & & fare. Non è come se valesse la pena distribuire questo semplice gioco, ma voglio imparare come funzionano autoconf e automake. Ho cercato gli esempi su Internet ma i tutorial che ho trovato mostra solo l'installazione di un semplice programma helloworld. Non parlano né dell'installazione di file di dati, né di come controllare se esistono alcune librerie in modo da potermi collegare in tempo di compilazione. Inoltre, il mio programma dovrebbe sapere dove installare ogni file in modo che possa caricarli. Ho approfondito i manuali di automake e autoconf, ma sono più come un materiale di riferimento che come una risorsa per i nuovi arrivati. Qualcuno potrebbe spiegare brevemente questi concetti o portarmi in un posto dove potrei leggere su di loro.Come pacchettizzare file di dati con autoconf e GNU di GNU

+0

Ho trovato che il modo migliore per andare con autoconf/automake è trovare un progetto simile al tuo, vedere cosa fanno e lavorare da lì con la documentazione. –

+0

Puoi dare un'occhiata al libro di John Calcote "Autotools: Guida di Practioner per GNU Autoconf, Automake e Libtool" –

+0

Prova il [Libro di capra] (http://sourceware.org/autobook/) per un'introduzione più leggibile a autotools. Hanno alcuni progetti di esempio di varia complessità che mostrano come fare le cose più comuni con gli autotools. – ldav1s

risposta

13

Ho fatto qualche ricerca su questo, e ho voluto condividere ciò che ha funzionato per me. Ho creato una struttura di directory simile a questo:

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

ho messo tutte le mie immagini, font, suoni ecc nella cartella dei dati. Makefile.am sulla cartella dei dati è simile al seguente:

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

Essa elenca semplicemente tutti i file che devono essere finire nella directory dei dati. Il Makefile.am nella cartella src simile a questa:

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

La parte importante qui è AM_CPPFLAGS, che definisce DATADIR macro, in base alle opzioni passati allo script di configurazione. Allora possiamo usare questa macro nei nostri file di origine in questo modo:

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

in modo che il vostro programma otterrà compilato sapere dove file di sfondo deve risiedere nel filesystem.

+0

Dovresti usare dist_pkgdata_DATA se vuoi distribuirlo? –