Какова точка файла aclocal script и aclocal.m4, в контексте использования autotools для настройки исходных файлов? Из того, что я читал, aclocal сканирует макрофайлы для макросов, которые позже используются automake. Я не понимаю этот процесс в глубину, но кажется, что функция сканирования могла быть встроена в automake.
Какой смысл аклокальной?
Ответ 1
См. учебник Alexandre Duret Lutz Autotools, необходимо прочитать.
Он содержит диаграммы, объясняющие, как разные файлы проекта autotools взаимодействуют друг с другом и с помощью какого инструмента они используются: configure
, config.h
, config.status
, aclocal.m4
и т.д.
EDIT: Джон Калькот также объясняет цель aclocal и aclocal.m4 в первой главе своей книги об Autotools: Глава 1: Краткое введение в GNU Autotools:
Утилита aclocal фактически документирована руководствами GNU в качестве временного решения для определенной гибкости в Autoconf. Autoconf был спроектирован и написан первым, а затем несколькими годами позже идея Automake была задумана как дополнение для Autoconf. Но Autoconf действительно не был предназначен для расширения в масштабе, требуемом Automake.
...
По сути, задача aclocals заключается в создании файла aclocal.m4 путем объединения различных макрофайлов из установленных пакетов Autotool и пользовательских мест, таких, что Autoconf может найти их все в одном месте.
...
Однако последняя документация из обоих наборов инструментов предполагает, что вся парадигма aclocal/acinclude устарела, в пользу более нового метода указания каталога, содержащего файлы макросов m4. Текущая рекомендация заключается в том, что вы создаете каталог в каталоге проекта, который называется просто m4 (acinclude кажется более подходящим для этого автора) и добавляет макросы в виде отдельных файлов .m4 в этот каталог. Все файлы в этом каталоге будут собраны в aclocal.m4 до того, как Autoconf обработает ваш файл configure.ac. В конечном итоге aclocal будет заменен функциональностью самого Autoconf.
Ответ 2
В моем программном обеспечении aclocal.m4
собирает различные нестандартные макросы Autoconf, которые я использую во время сборки моего программного обеспечения. Один из таких наборов макросов имеет дело с субсекундной синхронизацией - выбор лучшего из доступных вариантов (в соответствии с некоторым заранее определенным критерием для "лучшего" ); другой такой набор макросов посвящен тонкостям системы компиляции IBM Informix ESQL/C, поскольку она эволюционировала в течение последних двух десятилетий (она обрабатывает ESQL/C 5.20, где версия 5.00 была выпущена в 1990 году, а также обрабатывает последние версии IBM Informix ClientSDK 3.50, что, к моему большому огорчению, содержит ESQL/C 3.50, хотя оно было выпущено в 2008 году).
Итак, aclocal.m4
предназначен для локальных макросов, которые не обязательно являются частью обычного Autoconf, но которые используются вашим конкретным программным обеспечением.
Ответ 3
Ссылка на статью Джона Калькота, представленную http://freesoftwaremagazine.com/articles/brief_introduction_to_gnu_autotools/. Я бы прокомментировал этот пост, но моя репутация здесь слишком низкая.