2009-12-28 3 views
33

Что такое aclocal скрипт и aclocal.m4 файл в контексте использования autotools для настройки исходных файлов? Из того, что я читал, aclocal сканирует макрофайлы для макросов, которые позже используются automake. Я не понимаю этот процесс в глубину, но кажется, что функция сканирования могла быть встроена в automake.В чем смысл aclocal?

+0

@WilliamPursell, можете ли вы объяснить теги «m4sh» и «m4sugar», пожалуйста? Каковы они и как они применяются к этому вопросу, когда они не упоминаются нигде в вопросе или ответах? – Charles

+0

@Charles autoconf напрямую не использует m4, скорее использует обертки 'm4sh' и' m4sugar'. Цель aclocal - сделать макросы m4sh и m4sugar доступными для autoconf. –

+0

@WilliamPursell, проблема здесь в том, что вопрос не в конечном счете о 'm4sh' или' m4sugar', а о 'aclocal' и autotools вообще. Я ничего здесь не вижу, или в другом вопросе, который вы отметили этими двумя тегами, что фактически делает теги релевантными для вопроса. – Charles

ответ

36

См. Alexandre Duret Lutz's Autotools tutorial, a необходимо прочитать.

Он содержит схемы объяснения, как различные файлы проекта Autotools взаимодействуют друг с другом и каким инструментом они используются: configure, config.h, config.status, aclocal.m4 и т.д.

EDIT: Джон Calcote также объясняет цель ACLOCAL и aclocal.m4 в первой главе his book about Autotools: Chapter 1: A brief introduction to the GNU Autotools:

ACLOCAL утилита на самом деле документально руководствами GNU как временную работу вокруг для определенного отсутствия гибкости в Autocon е. Autoconf был спроектирован и написан первым, а затем несколькими годами позже идея Automake была задумана как дополнение для Autoconf. Но Autoconf действительно не был предназначен для расширения в масштабе, требуемом Automake.

...

По сути, работа ACLOCAL является создание файла aclocal.m4 путем объединения различных макро-файлов из установленных пакетов автоинструмента и указанного пользователя мест, так что Autoconf может найти их в одно место.

...

Однако последняя документация от обоих наборов инструментов предполагает, что вся ACLOCAL/acinclude парадигма является устаревшим, в пользу более нового способа определить каталог, содержащий m4 макрос файлы. Текущая рекомендация заключается в том, что вы создаете каталог в каталоге проекта, который называется просто m4 (acinclude кажется более подходящим для этого автора), и добавьте макросы в виде отдельных файлов .m4 в этот каталог. Все файлы в этом каталоге будут собраны в aclocal.m4 до того, как Autoconf обработает ваш файл configure.ac. В конечном итоге, aclocal будет заменен функциональностью самого Autoconf.

+2

Итак, был ли заменен 'aclocal' функциональностью Autoconf? –

8

В моем программном обеспечении 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, но которые используются вашим конкретным программным обеспечением.

+7

+1, это именно то, для чего это нужно. Многие люди просто бросают эти биты в файле configure.ac/configure.in, который, как известно, вызывает безумие, слепоту и даже синдром торекта для распространителей. –

0

Ссылка на статью Джона Калькота, указанную http://freesoftwaremagazine.com/articles/brief_introduction_to_gnu_autotools/. Я бы прокомментировал этот пост, но моя репутация здесь слишком низкая.

Эфирное пункт:

По сути, работа ACLOCAL является создание файла aclocal.m4 путем объединения различных макро-файлов из установленных пакетов автоинструмента и указанного пользователя мест, так что Autoconf может найти их все в одном месте.

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/18762464) – jfeferman