Я загрузил макрос из Autoconf Archive, и я хочу его использовать. Что мне нужно добавить в файл configure.ac, чтобы использовать этот макрос?
Как включить файлы .m4 в Autoconf?
Ответ 1
Вы можете добавить AC_CONFIG_MACRO_DIR в configure.ac
в каталог, где находится макрос:
AC_CONFIG_MACRO_DIR([path/to/macros])
Вам также нужно вызвать макрос в этом файле.
и в Makefile.am
вам, вероятно, потребуется настроить ACLOCAL_AMFLAGS (если вы используете automake):
ACLOCAL_AMFLAGS = -I path/to/macros
Затем вызовите autoreconf -fvi
, и вы должны быть установлены.
Ответ 2
У меня был такой же вопрос, и найти ответ мне было труднее, чем я думал. Похоже, что AC_CONFIG_MACRO_DIR
был тем, что я хотел, но если вы не используете libtoolize, кажется, что AC_CONFIG_MACRO_DIR
сейчас бесполезно.
Если вы используете automake, я думаю, что правильный ответ.
Я не использую automake, поэтому единственный способ, которым я нашел, - использовать макрос m4_include
для всасывания каждого файла .m4 по отдельности. Я нашел этот подход здесь:
http://www.flameeyes.eu/autotools-mythbuster/autoconf/macros.html
Надеюсь, это поможет. (Учитывая, как долго работает autoconf, это немного умудряет мой разум, что нет встроенного способа просто указать каталог в файле .ac.Это похоже, что это будет широко распространенный случай использования. О, хорошо.)
Ответ 3
В качестве альтернативы решению Idav1s (что абсолютно правильно) вы можете установить макрос в том месте, где aclocal
найдет его (используйте aclocal --print
, чтобы увидеть, где aclocal
ищет файлы .m4
). У каждого подхода есть плюсы и минусы. Если вы установите файлы .m4
в $(aclocal --print)
, вы можете использовать макрос во всех своих проектах, не делая ничего другого. Основной недостаток заключается в том, что каждый разработчик, который работает над проектом, должен будет установить макрос в своем поле, и это требует от каждого разработчика разумного понимания автозапуска.
Ответ 4
У меня тоже есть эта проблема, и я просто ее исправил. Моя среда: CentOS 6.4, M4 1.4.17, autoconf 2.69, libtool 2.4, automake 1.14
Вот шаги, которые я использовал.
add m4 as AC_CONFIG_MACRO_DIR to your configure.ac
rm aclocal.m4 if it exists
mkdir m4 if it does not exist
# copy some dummy files into the folder
# or some versions of autoconf won't work
autoreconf -i --install
Ответ 5
Не достаточно ли просто сохранить макрос m4 в определенном каталоге и запустить autoreconf
с помощью опции -I
:
autoreconf -i -I/path/to/your/m4/file
Или я неправильно понял вас, и вы хотите интегрировать его навсегда, без того, чтобы человек, работающий под управлением autoreconf
, беспокоиться о загрузке файла m4?