возможно, неопределенный макрос: ошибка AC MSG



у меня есть следующее configure.ac:



AC_CHECK_PROGS(MAKE,$MAKE make gmake,error)
if test "x$MAKE" = "xerror" ;then
AC_MSG_ERROR([cannot find a make command])
fi


это было в нашем проекте в течение длительного времени, но в некоторых настроек, я получаю эту ошибку:



configure.ac:45: error: possibly undefined macro: AC_MSG_ERROR
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.


строки, которые были недавно добавлены выше этого:



AC_CONFIG_MACRO_DIR([m4])
LT_INIT


кто-нибудь может объяснить, что вызывает эту ошибку и как отследить проблему?



EDIT: добавление сведений о различиях.

726   17  

17 ответов:

У меня была такая же проблема, и я обнаружил, что отсутствует.

после установки пакета, все правильно.

рекомендуется использовать autoreconf -fi вместо ручного вызова aclocal;autoconf;automake; #and whatever else для правильного заполнения aclocal.М4 и так далее.

добавлять ACLOCAL_AMFLAGS = -I m4 (на верхний уровень Makefile.am) и AC_CONFIG_MACRO_DIR([m4]) В настоящее время все еще является необязательным, если вы не используете собственные файлы m4, но, конечно, это заставит замолчать proocess :)

у меня была эта проблема с моим собственным configure.ac, но в этом случае (и для пользы любого здесь от Google) это было потому, что я случайно процитировал AC_MSG_ERROR таким образом, это рассматривалось как строка:

AX_BOOST_BASE([1.42], [], [AC_MSG_ERROR([Could not find Boost])])

как только я снял квадратные скобки вокруг AC_MSG_ERROR макрос, он работал:

AX_BOOST_BASE([1.42], [], AC_MSG_ERROR([Could not find Boost]))

эти комментарии говорят, что вы должны установить pkg-config или какой-то пакет не хватает точки. Элемент AC_MSG_ERROR должен работать и дать вам полезное сообщение, как "Вам нужно установить пакет XYZ", но из-за какой-то проблемы,AC_MSG_ERROR не работает. Установка пакета XYZ, безусловно, сделает ошибку уйти, но только потому, что как только пакет есть, больше нет необходимости печатать сообщение об ошибке!

поэтому установка pkg-config или конкретный пакет просто обходит проблему, на самом деле это не исправить.

Я испытал эту же проблему под CentOS 7

в случае мая, проблема ушла после установки libcurl-devel (libcurl уже был установлен на этой машине)

У меня тоже была подобная проблема.. мое решение заключается в

apt-get install libcurl4-openssl-dev

(У меня уже был установлен libcurl allready ) по крайней мере, работал на меня..

вы настраиваете локальный''? например,

> aclocal -I m4 --install

некоторые пакеты поставляются с autogen.sh или initgen.sh сценарий оболочки для запуска glibtoolize, autoheader, autoconf, automake. Вот это autogen.sh скрипт я использую:

#! /bin/sh

case `uname` in Darwin*) glibtoolize --copy ;;
  *) libtoolize --copy ;; esac

autoheader
aclocal -I m4 --install
autoconf

automake --foreign --add-missing --force-missing --copy

EDIT

возможно, вам придется добавить ACLOCAL_AMFLAGS = -I m4 на верхний уровень Makefile.am.

ошибка генерируется autom4te. Если все настроено правильно, часть кода, которая генерирует эту ошибку, никогда не должна видеть "AC_MSG_ERROR", потому что она должна была быть расширена m4 до этого момента. Вы говорите, что ошибка происходит только"в некоторых настройках". Я бы предположил, что в этих настройках ваша установка autoconf является fubar. Возможно, у вас установлена несовместимая версия m4.

С Помощью MacOS X

sudo port install pkgconfig

было решение!

на Mac OS X el captain с brew, попробуйте:
brew install pkgconfig

Это работает для меня.

Я решил это с помощью yum install libtool

Для Debian. Обязательными пакетами являются: M4 automake pkg-config libtool

Это случилось со мной , когда я забыл a, в аргументах для локально определенного макроса. Потратил часы, пытаясь понять это (едва знаком с autotools)...

AC_CHECK_MACRO([Foo]
    AC_LOCAL_DO([......

должен был

AC_CHECK_MACRO([Foo],      # <-- Notice comma, doh!
    AC_LOCAL_DO([......

похоже, что он должен был дать мне ошибку или что-то в этом роде, но я полагаю, что будучи макропроцессором он может делать только то, что ему сказали.

у меня была такая же проблема на Ubuntu (error: possibly undefined macro: AC_MSG_ERROR) но ответы выше не работали для меня. Я нашел решение здесь

что получилось:

$ LANG=C LC_CTYPE=C ./autogen.sh

моя проблема решена после установки pkg-config на Mac (brew install pkg-config)

есть две возможные причины этой проблемы:

  1. не устанавливал aclocal.
    решение:установите libtool

    • для ubuntu:sudo apt-get install libtool
    • для centos:sudo yum install libtool
  2. путь к LIBTOOL.М4-это ошибка.
    решение:

    1. использовать aclocal --print-ac-dir для проверки текущего пути к aclocal.(Обычно это должно быть "/ usr / share / aclocal " или "/usr / share / aclocal")
    2. затем проверьте, есть ли *.файлы m4.
    3. если нет, то cp соответствует *.M4 файлы по этому пути.(Может быть cp /usr/share/aclocal/*.m4 /usr/local/share/aclocal/ или cp /usr/local/share/aclocal/*.m4 /usr/share/aclocal/)

надеюсь, что это помогает

У меня была такая же проблема на RHEL7. 5 с otto-de / libvmod-uuid

Это было исправлено путем установки пакетов "autoconf-archive"

У меня была такая же проблема с портом Macports "openocd" (локально измененный файл порта для использования репозитория git) на недавно установленной машине.

постоянное исправление легко, определите зависимость от pkgconfig в файле порта: depends_lib-добавить порт: pkgconfig

Comments

    Ничего не найдено.