Как мне объединить AC_SUBST и AC_DEFINE? - PullRequest
4 голосов
/ 04 января 2012

У меня есть configure.ac файл, содержащий такие строки, как:

AC_DEFINE(CONF_XDISP, ":8", "X screen number")

Эти константы используются в источнике C для установки параметров компиляции по умолчанию.У меня также есть файл конфигурации conf/bumblebee.conf, в котором необходимо установить эти значения по умолчанию.Мне сказали, что AC_SUBST можно использовать для замены @CONF_XDISP@ на ":8", так что следующая строка:

VGL_DISPLAY=@CONF_XDISP@

становится:

VGL_DISPLAY=":8"

Создание AC_SUBST строка для каждого AC_DEFINE выглядит не лучшим образом для меня, поскольку включает в себя много дублирования строк.Как я могу объединить эти параметры, чтобы я мог использовать что-то вроде AC_DEFINE_SUBST?Другие идеи и предложения по улучшению этого тоже приветствуются.

Ответы [ 2 ]

6 голосов
/ 04 января 2012
В конце концов,

m4 - это макроязык, поэтому что-то вроде

 AC_DEFUN([AC_DEFINE_SUBST], 
   [AC_DEFINE($1,$2,$3) 
    AC_SUBST($1)])

должно сработать.Возможно, вам придется немного поиграть с [, чтобы выбраться правильно.

5 голосов
/ 05 января 2012

Благодаря Тинтон , я могу приготовить следующий код:

# AC_DEFINE_SUBST(NAME, VALUE, DESCRIPTION)
# -----------------------------------------
AC_DEFUN([AC_DEFINE_SUBST], [
AC_DEFINE([$1], [$2], [$3])
AC_SUBST([$1], ['$2'])
])

Для AC_DEFINE_SUBST(CONF_XDISP, ":8", "X screen number") генерируется файл configure, содержащий:

$as_echo "#define CONF_XDISP \":8 \$PWD\"" >>confdefs.h

CONF_XDISP='":8"'

Документы по теме:

...