2017-06-23 4 views
0

J'ai quelques fichiers de données utilisés dans mon paquet. Ce sont 74 fichiers dans un répertoire. Selon automake manual section 9.3 fichiers de données indépendants de l'architecture je peux les énumérer individuellementcomment distribuer tous les fichiers dans un répertoire de données avec automake

dist_pkgdata_DATA = mydir/file1 mydir/file2 ..... mydir/file74 

C'est trop taper. Tout le monde peut proposer une bonne solution? Il existe un slightly different solution pour un tel problème, mais il s'agit essentiellement du même mécanisme (répertoriant tous les fichiers manuellement). Puisque les programmeurs sont paresseux, nous ne voulons pas les taper. De plus, chaque fois que vous devez ajouter de nouveaux fichiers ou supprimer un ancien fichier, vous devez mettre à jour Makefile.am.

Répondre

0

Si vous ne voulez pas du tout répertorier les fichiers the compressed file approach avec ses hooks d'installation/de désinstallation, cela semble être une approche raisonnable pour beaucoup de fichiers, surtout s'ils sont essentiellement "en écriture seule".

Si vous voulez avoir ces fichiers normalement inspectable vous devez faire quelque chose comme:

MYDIR = mydir 
EXTRA_DIST = $(MYDIR) 

install-data-local: 
     test -z $(pkgdatadir) || $(MKDIR_P) $(pkgdatadir) 
     find "$(MYDIR)" -type f -exec $(INSTALL_DATA) {} $(pkgdatadir) \; 

La partie « trop de frappe » est due au préfixe dist_-automake qui est dit à emballer ces fichiers pour l'archive tar de distribution. D'autre part inclura le contenu entier d'un répertoire dans l'archive, mais vous devez spécifier ce qu'il faut faire avec ces fichiers plus tard. Et ça ne vérifie vraiment pas non plus. Si mydir a 2 fichiers ou 74 fichiers, c'est tout à automake.

Une autre façon de le résoudre est d'avoir un autre programme bootstrap.sh (avant autoreconf est invoqué) faire un fragment de makefile définissant dist_pkgdata_DATA qui est alors included dans Makefile.am. Cela ne fixe toujours pas le nombre correct de problèmes de fichiers non plus.