Ответ 1
Чтобы действительно понять утилиты autotools, вы должны помнить, откуда они пришли: они происходят из мира с открытым исходным кодом, где есть (а) разработчики, которые работают из репозитория исходного кода (CVS, Git и т.д.).) и создания tar файла или аналогичного исходного кода и размещения этого tar файла на сайте загрузки и (b) конечных пользователей, которые получают файл tar-кода исходного кода, компилируют этот исходный код в своей системе и используют результирующий двоичный файл. Очевидно, что люди в группе (а) также компилируют код и используют результирующий двоичный файл, но люди из группы (б) не имеют или не часто используют все инструменты для развития, которые нужны людям в группе (а).
Таким образом, использование инструментов ориентировано на этот раскол, где люди в группе (b) не имеют доступа к autoconf, automake и т.д.
При использовании autoconf люди обычно проверяют файл configure.ac
(ввод на autoconf) в исходный элемент управления, но не проверяют вывод autoconf, configure
script (некоторые проекты проверяют configure
script, конечно: это зависит от вас).
При использовании automake люди обычно проверяют файл Makefile.am
(ввод automay), но не проверяют вывод automake: Makefile.in
.
configure
script в основном рассматривает вашу систему для различных необязательных элементов, которые пакет может или не нужен, где они могут быть найдены, и т.д. После того, как он найдет эту информацию, он может использовать ее для преобразования различных XXX.in
(обычно, но не только, Makefile.in
) в файлы XXX
(например, Makefile
).
Итак, шаги обычно идут следующим образом: напишите configure.ac
и Makefile.am
и проверьте их. Чтобы создать проект из проверки контроля исходного кода, запустите autoconf для генерации configure
из configure.ac
. Запустите automake, чтобы сгенерировать Makefile.in
из Makefile.am
. Запустите configure, чтобы сгенерировать Makefile
из Makefile.in
. Запустите make для сборки продукта.
Если вы хотите освободить исходный код (если вы разрабатываете продукт с открытым исходным кодом, который выпускает исходные коды), вы запускаете autoconf и automake, а затем объединяете исходный код с файлами configure
и Makefile.in
так что людям, строящим исходный код, просто нужно сделать и компилятор, и не нужны никакие autotools.
Поскольку порядок запуска autoconf и automake (и libtool, если вы его используете) может быть сложным, поэтому существуют сценарии типа autogen.sh и autoreconf и т.д., которые проверяются в исходном элементе управления, которые будут использоваться разработчиками, создающими исходный элемент управления, но они не нужны/используются людьми, созданными из файла tar файла релиза исходного кода и т.д.
Autoconf и automake часто используются вместе, но вы можете использовать autoconf без automake, если вы хотите написать свой собственный Makefile.in
.