2016-03-28 10 views
0

Ich versuche, die Versionsinformation von configure.ac zu Makefile.am mit drei numerischen Variablen zu übergeben, die verwendet wird, um den Parameter -version-info während der Kompilierung der. so Datei.Übergeben von numerischen Argumenten an Makefile.am in Autoconf

Das ist mein 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]) 

Der Wert für Strom, Revision und das Alter ist nicht bestanden wird, Makefile.am! Sie sind alle leere Variablen, obwohl ich sie am Anfang der Datei sehr klar definiert habe. Benütze ich die Variablendefinition hier nicht korrekt?

Die Nachricht, die für gedruckt wird: -

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

ist

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

Warum es meine Eingabe nehmen nicht Wert?

+0

Zuordnung zu Variablen funktioniert erst nach AC_INIT. Bevor es nicht funktioniert. Warum? –

Antwort

1

In Ihrem Fall, weil das Parsing bei AC_INIT und alles davor beginnt, wird von Autoconf nicht verwendet. Sie können versuchen, so etwas wie dieses:

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 Variablen auf Kind makefiles.am sichtbar machen. Aber wenn Sie wirklich vor AC_INIT die Variablendeklaration sein wollen, versuchen Sie m4 Makros.

# 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

Großartig! Das Makro * define * war das, wonach ich suchte! Vielen Dank! –