2012-07-25 4 views
9

In Makefile.in I Variablendefinition sehen, wo eine externe Variablennamen zwischen zwei @ SymboleMakefile.in und Variablensubstitution

# @[email protected] 

package = @[email protected] 

Sind diese externen Variablen kommen eingeschlossen ist? Außerdem konnte ich im GNU-Handbuch nicht finden, was genau eine Variable zwischen zwei @ Symbolen bedeutet? Ist es etwas speziell für Makefile.in?

Vielen Dank.

Antwort

8

Es ist eine Autoconf Sache.

Wenn ./configure Ausführung beendet ist, erzeugt sie und führt eine Datei config.status, genannt, die ein Shell-Skript, das den Endwert der Variable Substitutionen (alles, was mit AC_SUBST erklärt) hat.

Alles, was in AC_CONFIG_FILES erklärt wird, wird von config.status verarbeitet werden, in der Regel durch foo.in in foo drehen.

Wenn auto verarbeitet Makefile.am in Makefile.in jedes AC_SUBST Variable wird automatisch zur Verfügung gestellt (eine Erklärung wie FOO = @[email protected] verwendet wird), es sei denn, sie durch einen Aufruf von AM_SUBST_NOTMAKE unterdrückt wird.

+0

Was ist mit 'PACKAGE_NAME' in der Frage? In meiner 'Makefile.am' benutzte ich' @datadir @/@ package_name @ ', und es wurde ersetzt durch' $ {datarootdir}/@ package_name @ ', was offensichtlich nicht korrekt ist. – jww

+0

'PACKAGE_NAME' ist speziell - es wird von' AC_INIT' gesetzt, wie unten erwähnt. –

Verwandte Themen