Ответ 1
Вы не должны хранить файлы под контролем версий, которые не редактируются вручную. Это означает, что любой сгенерированный файл должен игнорироваться системой управления версиями. Я в основном ставил только следующее управление версиями:
-
configure.ac
-
Makefile.am
- файлы документации, такие как
AUTHORS
,NEWS
и т.д. -
Makefile.am
в подкаталогах
Чтобы решить вопрос о версии "готовой к установке", выпущенной Scharron, некоторые люди включают script в корневой каталог проекта, называемый bootstrap
или autogen.sh
, который вы запускаете один раз, когда вы проверяете новую копию. Вы можете увидеть пример в одном из моих проектов здесь. Для более простого проекта ваш autogen.sh
действительно должен состоять только из одной строки:
autoreconf --install || exit 1
хотя некоторые люди предпочитают автоматически запускать ./configure
в конце autogen.sh
.
Почему бы не отслеживать все сгенерированные файлы в контроле версий? Потому что их содержимое зависит от машины, на которой вы строите, версии автотюнов, с которыми вы их сгенерировали, и фазы луны. Каждый раз, когда любое из этих изменений, сгенерированные файлы autotools будут меняться, и вы получите много мусора в своих коммитах.
Кроме того, у любого, кто проверяет ваш код вне контроля версий, чтобы его построить, должно быть установлено, что у него установлены соответствующие средства разработки, поэтому вам действительно не нужно беспокоиться о том, что люди сталкиваются с проблемами из-за отсутствия autotools.
Что VonC говорит о проектах C, идущих с файлом configure
для генерации Makefile
, верно для дистрибутивов исходного кода (файл .tar.gz
, который вы получаете при вводе make dist
), но не обязательно для свежего out из контроля версий.