Рашид Ачилов
GNU Autotools, комплект скриптов, предназначенный для облегчения процесса
построения сложных программных проектов, является чрезвычайно удобной и мощной
системой. Есть тут только одно «но» – эта система очень плохо документирована.
Поэтому если при сборке чужого проекта неожиданно возникает ошибка, то чувство
растерянности – и что тут делать дальше? – вполне уместно. Прочитав эту статью,
вы узнаете о том, как программы Autotools связаны между собой и как можно
исправить чужие ошибки, не наделав своих.
Анатомия
Сейчас уже трудно себе представить, что когда-то для сборки любого
программного проекта сначала необходимо было тщательно читать различные README,
INSTALL и другую документацию – большую часть работы по выполнению нужных
проверок и созданию файла Makefile берет на себя скрипт configure. Но ведь и
сам скрипт configure должен создаваться каким-то образом? В этом и состоит роль
GNU Autotools – в упрощении работы по сопровождению программных проектов.
Каждый программист знает, что сопровождение
программных проектов, в которые входят хотя бы два файла и одна внешняя
библиотека, – это достаточно сложное и муторное дело – необходимо позаботиться
о том, чтобы в системе оказались все нужные функции и вспомогательные
программы, чтобы были установлены подходящие библиотеки требуемых версий. Также
надо найти места, где дополнительные программы установлены, занести в Makefile
перечень всех файлов с исходным текстом и предусмотреть обработку специальных
файлов, если они есть. При этом, конечно же, не забыть создать все каталоги и
перечислить нужные библиотеки при компиляции и сборке. Приходится делать
множество вещей, которые повторяются раз от раза для каждого из разрабатываемых
программных проектов.
Все это хорошо знал и Дэвид Мак-Кензи (David
MacKenzie), разработавший в 1992 году первый компонент GNU Autotools –
программу Autoconf. В 1994 году им же была написана первая версия программы
Automake, позже полностью переписанная Томом Троми (Tom Tromey). В 1996 году в
состав GNU Autotools вошел третий важный компонент – Libtool, написанный
Гордоном Матцигкейтом (Gordon Matzigkeit). В 1998 году GNU Autotools были
портированы под Windows Яном Лэнсом Тейлором (Ian Lance Taylor).
Почему же эти скрипты так важны, чем они так
облегчают жизнь программисту?