2009-02-21 11 views

Répondre

1

Utilisez autotools pour créer le script de configuration (qui va générer le Makefile nécessaire pour les deux dernières étapes), puis faire un tarball avec tout votre code et tout ça.

1

rpmbuild est une commande pour construire des paquets rpm

man page

tutorial

+0

Lorsque je lis la page de manuel liée, elle ne semble pas répondre à la question qui m'a été posée: comment fournir une plateforme flexible en premier lieu (c'est-à-dire aider à écrire configure et makefile) ... rpmbuild sembler supposer que vous avez une telle chose en place. – dmckee

+0

Peut-être que j'ai mal compris la question. http://www.lrde.epita.fr/~adl/autotools.html – Sharique

3

Dans l'ancien temps, ce processus a été fait à la main. Chaque Makefile a été écrit à la main (le fichier make utilise comme une sorte de script). Cela est devenu problématique en ce qui concerne la portabilité, et le script configure a été créé. Le script ./configure a été écrit à la main pour chaque projet. Finalement, cela a été automatisé par GNU avec leur paquet autotools. Cela se compose de autoconf, automake, et quelques autres. Alors que des alternatives existent, en particulier pour make, autotools est le plus largement utilisé. ... Au moins sur les systèmes GNU/Linux. Les alternatives incluent les CMake, Boost.Build, Boost.Jam, SCons et plus encore.

1

Autotools.

Vous devez écrire un script configure.ac et un script Makefile.am.

Configure.ac est assez facile et peut être générée automatiquement en exécutant 'autoscan' sur votre code source. Cela va générer un fichier 'configure.scan' que vous devrez modifier pour générer le dernier fichier configure.ac.

Le fichier Automake.am est basé sur des conventions. Vous aurez probablement besoin de quelque chose comme:

AUTOMAKE_OPTIONS = foreign subdir-objects 
AM_CXXFLAGS = -std=c++11 -static-libstdc++ -Wall -Werror \ 
    -Wfatal-errors -I blah 
AM_LDFLAGS = blah 

bin_PROGRAMS = mybinary 
mybinary_SOURCES = \ 
    blah.h blah.cc 

tout est basé sur un schéma de nommage:

  • dist vs nodist = doit-il être construit
  • inst vs noinst = doit-il être installé
  • DATA = fichiers de données
  • pages = MANS homme
  • sOURCES = code source

donc dist_noinst_DATA est pour les fichiers de données requis pour la construction, mais ne sont pas installés.

Une fois que vous avez ces deux fichiers dont vous avez besoin généralement d'utiliser quelque chose comme:

aclocal & & autoheader & & automake --AJOUTEZ manquantes & & autoconf

à installer autotools fichiers requis pour la construction. Cela peut être mis dans un script shell et exécuté avant d'exécuter ./configure.