Какова задача autogen.sh при сборке пакета С++ в Linux

Я видел распространенную схему при установке пакета c/c++ из исходного кода в Linux (Ubuntu 16.04):

  1. ./autogen.sh
  2. ./настроить
  3. делать
  4. сделать установку

Я понимаю make и make install, и я предполагаю, что configure создает Makefile на основе пользовательских настроек, но я не понимаю, зачем нужен autogen.sh.

Кто-нибудь знает, для чего он там?


person Elad Weiss    schedule 26.04.2018    source источник
comment
Я считаю, что это необходимо для autotools/automake.   -  person Arnav Borborah    schedule 26.04.2018
comment
пакет означает какой пакет?   -  person Arash    schedule 26.04.2018
comment
о верно. простите. в поиске не увидел...   -  person Elad Weiss    schedule 26.04.2018


Ответы (2)


Шаги:

  1. Сценарий autogen.sh генерирует сценарий configure (из configure.ac, используя autoconf) и все необходимые ему файлы (например, создание Makefile.in из Makefile.am с помощью automake). Для этого в вашей системе должны быть установлены автоинструменты, и их необходимо запускать при извлечении проекта из системы управления версиями (если configure не зарегистрирован). Люди, загружающие tar-архивы с исходным кодом, обычно могут пропустить этот шаг, потому что выходные данные этого шага включаются в tar-архивы с исходным кодом.

    Примечание Обычно это эквивалентно autoreconf --install. Если файла autogen.sh нет, то просто запустите вместо него autoreconf --install. Если вы унаследовали проект с autogen.sh, рассмотрите возможность его удаления, если вы можете использовать autoreconf --install.

  2. Сценарий configure генерирует Makefile и другие файлы, необходимые для сборки. Обычно Makefile.in используется в качестве шаблона для создания Makefileconfig.h.in для создания config.h). Этот процесс происходит с использованием только стандартных инструментов, установленных в вашей системе, таких как sed и awk, и не требует установки автоинструментов.

  3. Команда make создает программное обеспечение.

  4. Команда make install устанавливает его.

Они разбиты на разные этапы, потому что часто выполняются в разное время. Шаг autogen.sh традиционно выполняется людьми, разрабатывающими программное обеспечение, так как ожидается, что они установят autoconf на свои системы и внесут изменения в configure.ac. Конечные пользователи не должны устанавливать автоинструменты.

Эти ожидания немного изменились теперь, когда конечные пользователи с большей вероятностью проверят проект вне системы управления исходным кодом, а не загрузят выпуски исходного кода.

person Dietrich Epp    schedule 26.04.2018
comment
autogen.sh обычно является просто оболочкой над autoreconf -i. Иногда это оболочка вокруг инструментов, которые вызывает сам autoreconf. Это в принципе бесполезно. - person BlakBat; 26.08.2019
comment
@BlakBat: добавлено. - person Dietrich Epp; 26.08.2019

Это относится только к программам/библиотекам, которые собираются с использованием цепочки сборки autotools. Он генерирует файлы, настроенные скриптом configure. Затем скрипт configure заполняет .in файлов и создает Makefiles из Makefile.am шаблонов. Который, наконец, можно использовать для компиляции, компоновки и установки программы/библиотеки.

Он постепенно устаревает с переходом на многоплатформенные пакеты. CMake и более современные цепочки инструментов являются современными.

person Kaveh Vahedipour    schedule 26.04.2018
comment
Этот вопрос не об Autotools, CMake и других. - person Akib Azmain; 22.03.2021