2016-03-28 2 views
0

Я пытаюсь передать информацию о версии из configure.ac в Makefile.am, используя три числовые переменные, которые используются для установки параметра -version-info во время компиляции. поэтому файл.Передача числовых аргументов в Makefile.am в Autoconf

Это мой 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]) 

Значение тока, пересмотра и возраст не передается в Makefile.am! Это все пустые переменные, несмотря на то, что я четко определяю их в начале файла. Я не использую определение переменной здесь?

сообщение, напечатанное на: -

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

является

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

Почему он не будет принимать мой входной значение?

+0

Назначение переменных работает только после AC_INIT. Прежде чем это не сработает. Зачем? –

ответ

1

В вашем случае, поскольку синтаксический анализ начинается с AC_INIT и все до этого не используется 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([version: $current.$rev.$build]) 
AC_CONFIG_FILES([Makefile]) 
AC_OUTPUT 

AC_SUBST делает переменные видимыми на дочернем языке makefiles.am. Но если вы действительно хотите, чтобы AC_INIT объявлял переменные, попробуйте 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

Отлично! Макрос * define * был тем, что я искал! Благодаря! –

Смежные вопросы