2012-02-11 3 views
6

Je suis un programmeur plutôt nouveau C++. J'ai fait un jeu très simple en utilisant des bibliothèques SDL. Mon jeu utilise naturellement des images, des sons et des polices. J'ai voulu faire une distribution du paquet, où l'utilisateur peut configurer & & make. Ce n'est pas comme si ce jeu simple valait la peine d'être distribué, mais je veux apprendre comment fonctionne autoconf et automake. J'ai cherché les exemples sur internet mais les tutoriels que j'ai pu trouver ne montrent que l'installation d'un simple programme helloworld. Ils ne parlent pas de l'installation des fichiers de données, ni comment vérifier si certaines bibliothèques existent pour que je puisse les lier à la compilation. Et aussi, mon programme devrait savoir où chaque fichier est installé afin qu'il puisse les charger. J'ai plongé dans les manuels d'automake et d'autoconf, mais ils ressemblent plus à des documents de référence qu'à une ressource pour les nouveaux venus. Quelqu'un pourrait-il expliquer brièvement ces concepts, ou me conduire à un endroit où je pourrais lire à leur sujet.Comment empaqueter des fichiers de données avec autoconf et automake de GNU

+0

J'ai trouvé que le meilleur moyen d'aller avec autoconf/automake est de trouver un projet similaire au vôtre, de voir ce qu'ils font, et de travailler à partir de là avec la documentation. –

+0

Vous pouvez regarder le livre de John Calcote "Autotools: Guide d'un praticien à GNU Autoconf, Automake, et Libtool" –

+0

Essayez le [livre de chèvre] (http://sourceware.org/autobook/) pour une introduction plus lisible à autotools. Ils ont quelques exemples de projets de complexité variable qui montrent comment faire les choses les plus courantes avec autotools. – ldav1s

Répondre

13

J'ai fait des recherches à ce sujet, et j'ai voulu partager ce qui a fonctionné pour moi. J'ai créé une structure de répertoires comme ceci:

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

J'ai mis toutes mes images, polices, sons, etc. dans le dossier de données. Makefile.am sur le dossier de données ressemble à ceci:

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

Il énumère simplement tous les fichiers qui doivent être finissent dans le répertoire de données. Le Makefile.am dans le dossier src ressemble à ceci:

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

L'important ici est AM_CPPFLAGS, qui définit macro DATADIR, selon les options passées au script de configuration. Donc, nous pouvons utiliser cette macro dans nos fichiers source comme ceci:

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

Pour que votre programme compilé se savoir où le fichier de base doit résider dans le système de fichiers.

+0

Devriez-vous utiliser dist_pkgdata_DATA si vous voulez le distribuer? –

Questions connexes