2009-02-21 23 views

risposta

1

Utilizzare autotools per creare lo script di configurazione (che genererà il Makefile necessari per gli ultimi due gradini), poi fare un tarball con tutto il tuo codice e tutto il resto.

1

rpmbuild è un comando di costruire pacchetti rpm

man page

tutorial

+0

Quando leggo la manpage collegata, non sembra rispondere alla domanda che credo sia stata posta: che cosa fornisce in primo luogo una piattaforma flessibile (ad esempio, aiuto nella scrittura di configure e makefile) ... rpmbuild sembra presumere che tu abbia una cosa del genere in atto. – dmckee

+0

Forse ho frainteso la domanda. http://www.lrde.epita.fr/~adl/autotools.html – Sharique

3

In passato, questo processo è stato fatto a mano. Ogni Makefile è stato scritto a mano (il file make viene utilizzato come una sorta di script). Questo è diventato problematico quando si è trattato della portabilità, quindi è stato creato lo script configure. Lo script ./configure è stato scritto a mano per ogni progetto. Alla fine questo è stato automatizzato da GNU con il loro pacchetto autotools. Questo è costituito da autoconf, automake e pochi altri. Sebbene esistano alternative, in particolare per make, è più comunemente utilizzato autotools. ... Almeno su sistemi GNU/Linux. Le alternative includono il già citato CMake, Boost.Build, Boost.Jam, SCons e altro.

1

Autotools.

Avrete bisogno di scrivere uno script configure.ac e un Makefile.am.

Configure.ac è abbastanza semplice e può essere in gran parte generato automaticamente dall'esecuzione di "autoscan" sul codice sorgente. Questo genererà un file 'configure.scan' che dovrai modificare per generare il file configure.ac finale.

Il file Automake.am è tutto basato su convenzioni. Avrete probabilmente bisogno di qualcosa come:

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 

tutto si basa su uno schema di denominazione:

  • dist vs nodist = dovrebbe essere costruito
  • inst vs noinst = dovrebbe essere installato
  • file
  • DATA = dati codice
  • MANS = pagine man
  • fONTI = fonte

quindi dist_noinst_DATA è per i file di dati richiesti per la costruzione ma non installati.

Una volta che avete entrambi questi file in genere è necessario eseguire qualcosa di simile:

aclocal & & autoheader & & automake --add mancanti & & autoconf

di impostare autotools file necessari per la costruzione. Questo può essere inserito in uno script di shell ed eseguito prima di eseguire ./configure.