Эти два файла чаще всего встречаются в проектах с открытым исходным кодом.
Для чего они и как они работают?
Makefile.am
это файл, определенный программистом, который используется automake
для генерации Makefile.in
файла ( .am
расшифровывается как uto m ake). configure
Сценарий , обычно видел в исходных тарболлах будет использовать Makefile.in
для генерации Makefile
.
Сам configure
сценарий генерируется из определенного программистом файла с именем configure.ac
or или configure.in
(не рекомендуется). Я предпочитаю .ac
(для токоррекция с ОНФ) , поскольку он отличает его от сгенерированных файлов и таким образом я могу иметь такие правила , как , которая работает . Поскольку это сгенерированный файл, он, как правило, не хранится в системе редакций, такой как Git, SVN, Mercurial или CVS, скорее файл будет.Makefile.in
make dist-clean
rm -f *.in
.ac
Узнайте больше о GNU Autotools . Читайте о make
и Makefile
первых, познакомимся automake
, autoconf
, libtool
и т.д.
.in
?.in
средство расширения , что это вход дляconfigure
массировать, а не конечный файл , который должен использоваться (например , сmake
). Если вам интересно, почему это кажется «нелепо» сложным, попробуйте прочитать: stackoverflow.com/a/26832773/939557 В наши дни GitHub и т. Д. Становятся общим каналом распространения, некоторые из предположений autoconf рушатся: люди получают исходный код непосредственно из инструмента управления исходным кодом, а не с помощью архива исходного кода, созданного сопровождающими.Простой пример
Бесстыдно адаптировано из: http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html и протестировано на Ubuntu 14.04 Automake 1.14.1.
Makefile.am
README.md
configure.ac
SRC / Makefile.am
SRC / main.c
использование
Это выводит:
Ноты
autoreconf --install
генерирует несколько файлов шаблонов, которые должны отслеживаться Git, в том числеMakefile.in
. Это нужно только запустить в первый раз.make install
устанавливает:/usr/local/bin
README.md
в/usr/local/share/doc/automake_hello_world
На GitHub для вас, чтобы попробовать это.
источник
DEVELOPER работает
autoconf
иautomake
:1) autoconf - создает настраиваемый сценарий
(который позже запустит установщик для создания Makefile )
2) Automake - создает транспортируемый Makefile.in файл данных
(который настроить позже будет читать , чтобы сделать Makefile )
УСТАНОВКА работает
configure
,make
иsudo make install
:КАРТА ВХОДА / ВЫХОДА
Обозначение ниже примерно: входы -> программы -> выходы
DEVELOPER запускает эти:
configure.ac -> Autoconf -> Configure (сценарий) --- (*. ас = токоррекция с ОНФ) configure.in -> Autoconf
-> Configure (сценарий) --- (
configure.in
амортизируется Использование configure.ac.)Makefile.am -> automake -> Makefile.in ----------- (*. Am = a uto m ake)
INSTALLER запускает эти:
Makefile.in -> Настройка -> Makefile . (* В = в пут - файла)
Makefile -> make ----------> (помещает новое программное обеспечение в ваши файлы для загрузки или во временный каталог)
Makefile -> make install -> (помещает новое программное обеспечение в системные каталоги)
« autoconf - это расширяемый пакет макросов M4, которые создают сценарии оболочки для автоматической настройки пакетов исходного кода программного обеспечения. Эти сценарии могут адаптировать пакеты для многих типов UNIX-подобных систем без ручного вмешательства пользователя. Autoconf создает сценарий конфигурации для пакета из файл шаблона, в котором перечислены функции операционной системы, которые может использовать пакет, в виде вызовов макросов M4. "
" automake - это инструмент для автоматической генерации файлов Makefile.in, соответствующих стандартам кодирования GNU. Automake требует использования Autoconf».
Руководства:
Бесплатные онлайн-уроки:
Пример:
Основной файл configure.ac, используемый для сборки LibreOffice, содержит более 12 тыс. Строк кода (но в подпапках также есть 57 других файлов configure.ac).
Исходя из этого, моя сгенерированная конфигурация содержит более 41 тыс. Строк кода.
И хотя Makefile.in и Makefile имеют всего 493 строки кода. (Но есть также еще 768 Makefile.in в подпапках.)
источник
ссылка :
Makefile.am - пользовательский файл ввода для автоматизации
configure.in - файл пользовательского ввода для autoconf
autoconf создает конфигурацию из файла configure.in
automake создает Makefile.in от Makefile.am
configure генерирует Makefile из Makefile.in
Например:
источник