2012-07-25 3 views
9

Dans Makefile.in je vois définition variable à laquelle un nom variable externe est enfermé entre deux @ symbolesMakefile.in et substitution de variables

# @[email protected] 

package = @[email protected] 

Lorsque ces variables externes viennent? En outre, je ne pouvais pas trouver dans le manuel GNU ce que signifie exactement entourant une variable entre deux symboles? Est-ce quelque chose de spécifique à Makefile.in?

Merci.

Répondre

8

C'est une chose autoconf.

Lorsque ./configure finit en cours d'exécution, il génère et exécute un fichier appelé config.status, qui est un script shell qui a la valeur finale des substitutions variables (quoi que ce soit déclarée avec AC_SUBST). Tout ce qui est déclaré dans AC_CONFIG_FILES est traité par config.status, généralement en transformant foo.in en foo.

Lorsque automake traite Makefile.am en Makefile.in, toute variable AC_SUBST est automatiquement mis à disposition (en utilisant une déclaration comme FOO = @[email protected]), à moins qu'elle soit supprimée par un appel à AM_SUBST_NOTMAKE.

+0

Qu'en est-il de 'PACKAGE_NAME' dans la question? Dans mon 'Makefile.am' j'ai utilisé' @datadir @/@ nom_du_paquetage @, et il a été remplacé par '$ {datarootdir}/@ nom_du_paquetage @, ce qui est évidemment incorrect. – jww

+0

'PACKAGE_NAME' est spécial - il est défini par' AC_INIT' comme indiqué ci-dessous. –

Questions connexes