2009-02-21 8 views

Antwort

1

Verwenden Autotools das Konfigurationsskript erstellen (die das Makefile erforderlich, dass die letzten beiden Schritte erzeugen wird), dann einen Tarball machen mit all dein Code und Zeug drin.

1

rpmbuild ein Befehl rpm-Pakete

man page

tutorial

+0

Wenn ich die verlinkte Manpage lese, scheint es nicht die Frage zu beantworten, von der ich glaube, dass sie gefragt wurde: Wie stellt man eine Plattform mit flexiblem Build zur Verfügung (zB Hilfe beim Schreiben von configure und makefile) ... rpmbuild scheinen anzunehmen, dass du so etwas an Ort und Stelle hast. – dmckee

+0

Vielleicht habe ich die Frage falsch verstanden. http://www.lrde.epita.fr/~adl/autotools.html – Sharique

3

In den alten Tagen, dieser Prozess wurde von Hand gemacht zu bauen. Jede Makefile wurde von Hand geschrieben (die Datei make verwendet als eine Art Skript). Dies wurde problematisch, wenn es um Portabilität ging, und so wurde das configure Skript erstellt. Das ./configure Skript wurde von Hand für jedes Projekt geschrieben. Letztendlich wurde dies von GNU mit ihrem autotools Paket automatisiert. Diese besteht aus autoconf, automake und einigen anderen. Während Alternativen existieren, insbesondere für make, ist autotools am weitesten verbreitet. ... zumindest auf GNU/Linux-Systemen. Alternativen umfassen die bereits erwähnten CMake, Boost.Build, Boost.Jam, SCons und mehr.

1

Autotools.

Sie müssen ein configure.ac- und ein Makefile.am-Skript schreiben.

Configure.ac ist ziemlich einfach und kann meistens automatisch generiert werden, wenn man 'autoscan' auf Ihrem Quellcode ausführt. Dadurch wird eine "configure.scan" -Datei generiert, die Sie optimieren müssen, um die endgültige configure.ac-Datei zu generieren.

Die Datei Automake.am basiert allesamt auf Konventionen. Sie werden wahrscheinlich brauchen so etwas wie:

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 

alles auf einem Namensschema basiert:

  • dist vs nodist = sollte es
  • inst vs noinst gebaut werden = sollte es
  • installiert werden
  • DATA = Datendateien
  • MANS = Manpages
  • QUELLEN = Quellcode

so dist_noinst_DATA ist für Datendateien erforderlich, die zum Erstellen erforderlich sind, aber nicht installiert sind.

Sobald Sie diese beiden Dateien, die Sie benötigen in der Regel etwas wie laufen:

aclocal & & autoheader & & auto --add fehlende & & autoconf

zu Setup-Dateien für den Bau erforderlich autotools. Dies kann in ein Shell-Skript eingefügt und vor dem Ausführen von ./configure ausgeführt werden.