2012-07-25 16 views
9

In Makefile.in vedo definizione variabile in cui è racchiuso un nome di variabile esterno tra due simboli @Makefile.in e sostituzione variabile

# @[email protected] 

package = @[email protected] 

Qualora tali variabili esterne vengono? Inoltre, non ho potuto trovare nel manuale GNU cosa significa racchiudere una variabile tra due simboli @? È qualcosa di specifico per Makefile.in?

Grazie.

risposta

8

È una cosa autoconf.

Quando ./configure termina l'esecuzione, esso genera ed esegue un file chiamato config.status, che è uno script di shell che ha il valore finale delle sostituzioni variabili (qualsiasi cosa dichiarata con AC_SUBST).

Tutto ciò che viene dichiarato in AC_CONFIG_FILES viene elaborato da config.status, in genere trasformando foo.in in foo.

Quando automake elabora Makefile.am in Makefile.in, qualsiasi variabile AC_SUBST viene automaticamente reso disponibile (utilizzando una dichiarazione come FOO = @[email protected]), se non è soppresso da una chiamata a AM_SUBST_NOTMAKE.

+0

Che dire di 'PACKAGE_NAME' nella domanda? Nel mio 'Makefile.am' ho usato' @datadir @/@ package_name @ ', ed è stato sostituito con' $ {datarootdir}/@ package_name @ ', che ovviamente non è corretto. – jww

+0

'PACKAGE_NAME' è speciale - è impostato da' AC_INIT' come tiwo menziona sotto. –

Problemi correlati