Какой смысл aclocal?

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

41
задан Charles 5 June 2012 в 16:39
поделиться

2 ответа

Смотрите учебное пособие Александра Дюрета Латца , a must read.

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

EDIT: Джон Калькотт также объясняет назначение aclocal и aclocal.m4 в первой главе своей книги об Autotools: Глава 1: Краткое введение в GNU Autotools:

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

...

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

...

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

40
ответ дан 27 November 2019 в 00:52
поделиться

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

.
10
ответ дан 27 November 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: