2016-03-28 2 views
0

J'essaie de transmettre les informations de version de configure.ac à Makefile.am en utilisant trois variables numériques, qui sont utilisées pour définir le paramètre -version-info lors de la compilation de. alors file.Passage d'arguments numériques à Makefile.am dans Autoconf

Ceci est mon configure.ac: -

current=4 
revision=2 
age=1 
AC_INIT([rdma2], [3.1], [[email protected]]) 
AM_INIT_AUTOMAKE 
AC_PROG_CXX(g++) 
LT_INIT 
AC_CONFIG_MACRO_DIR([config]) 
AC_MSG_NOTICE([version: $current.$revision.$age]) 
SET_MISC($current,"$revision","$age") 
AC_OUTPUT([Makefile]) 

La valeur actuelle, la révision et l'âge est pas transmise à makefile.am! Ce sont toutes des variables vides bien que je les définisse très clairement au début du fichier. Est-ce que je n'utilise pas la définition de variable correctement ici?

Le message qui est imprimé pour: -

AC_MSG_NOTICE([version: $current.$revision.$age]) 

est

... 
configure: version: .. 
... 

Pourquoi pas prendre ma valeur d'entrée?

+0

L'affectation aux variables ne fonctionne qu'après AC_INIT. Avant ça ne marche pas. Pourquoi? –

Répondre

1

Dans votre cas, car l'analyse commence à AC_INIT et tout ce qui précède n'est pas utilisé par autoconf. Vous pouvez essayer, quelque chose comme ceci:

AC_INIT([rdma2], [3.1], [[email protected]]) 
AM_INIT_AUTOMAKE([foreign subdir-objects]) 
AC_CONFIG_SRCDIR([configure.ac]) 
AC_CONFIG_HEADERS([config.h]) 
AC_CONFIG_MACRO_DIR([config]) 
AC_PROG_CXX 
LT_INIT 
AC_SUBST([current], [4]) 
AC_SUBST([rev], [2]) 
AC_SUBST([build], [1]) 
AC_MSG_NOTICE([version: $current.$rev.$build]) 
AC_CONFIG_FILES([Makefile]) 
AC_OUTPUT 

AC_SUBST rendre les variables visibles sur l'enfant makefiles.am. Mais si vous voulez vraiment être avant AC_INIT la déclaration des variables, essayez les macros m4.

# m4 macro 
define(MESSAGE, Current version status) 
# say hello to autoconf 
AC_INIT([rdma2], [3.1], [[email protected]]) 
AM_INIT_AUTOMAKE([foreign subdir-objects]) 
AC_CONFIG_SRCDIR([configure.ac]) 
AC_CONFIG_HEADERS([config.h]) 
AC_CONFIG_MACRO_DIR([config]) 
AC_PROG_CXX 
LT_INIT 
AC_SUBST([current], [4]) 
AC_SUBST([rev], [2]) 
AC_SUBST([build], [1]) 
AC_MSG_NOTICE([MESSAGE: $current.$rev.$build]) 
AC_CONFIG_FILES([Makefile]) 
AC_OUTPUT 
+0

Super! La macro * define * était ce que je cherchais! Merci! –