Алексей Махоткин

домашняя страница

Automake

Go to the first, previous, next, last section, table of contents.


Автоматическое отслеживание зависимостей

Для разработчика зачастую мучительно бывает постоянно обновлять файл `Makefile.in’ при изменении зависимостей включаемых в проект файлов. Automake предоставляет возможность автоматического отслеживания изменения зависимостей и записи информации о них в сгенерированный `Makefile.in’.

В настоящее время эта поддержка требует использования GNU make и gcc. В будущем может быть возможным поставка другой программы генерации зависимостей, если это будет требоваться. По умолчанию этот режим разрешен, если в текущем каталоге определена любая программа или библиотека на C, так что вы можете получить от не-GNU make ошибку `Должен быть разделитель’.

Когда вы решаете создать дистрибутив, то цель dist перезапустит automake с ключом `–include-deps’ и другими ключами. See section Создание файла `Makefile.in’, и section Изменение поведения Automake. При этом предварительно сгенерированные зависимости будут помещены в созданный `Makefile.in’ и, таким образом, они окажутся в дистрибутиве. При этом в дистрибутив код генерации зависимостей не будет включен в дистрибутив, так что человек, загрузивший ваш дистрибутив и не использующий GNU make и gcc, не получит ошибки.

При добавлении зависимостей в `Makefile.in’, из них автоматически удаляются все специфические для данной системы зависимости. Это может быть сделано перечислением файлов в переменной `OMIT_DEPENDENCIES’. Например, Automake удаляет все ссылки на системные заголовочные файлы. Иногда полезно указать, чтобы были удалены отдельные заголовочные файлы. Например, если ваш файл `configure.in’ использует макрос `AM_WITH_REGEX’, то любая зависимость от файла `rx.h’ или `regex.h’ должны быть удалена, потому что правильное значение не может быть известно до того, как пользователь выполнит конфигурацию пакета.

Оказывается, Automake достаточно умен для обработки именно этого случая использования заголовочных файлов библиотеки регулярных выражений. Он также автоматически убирает зависимость от `libintl.h’ при использовании `AM_GNU_GETTEXT’.

Автоматическое отслеживание зависимостей может быть запрещено помещением no-dependencies в переменную AUTOMAKE_OPTIONS.

Если вы распаковываете дистрибутив, созданный make dist, и хотите включить отслеживание зависимостей, то просто перезапустите automake.

Файлы зависимостей помещаются в подкаталог с именем `.deps’ каталога, где происходит построение. Эти зависимости являются специфическими для машины. Можете удалить их, если хотите; они будут автоматически пересозданы при следующей сборке.


Go to the first, previous, next, last section, table of contents.

Comments