Відповіді:
Makefile.am
програміст певний файл і використовується automake
для створення Makefile.in
файлу ( .am
розшифровується як в UTO м аке). configure
Сценарій , звичайно бачив у вихідних тарболлах буде використовувати Makefile.in
для генерації Makefile
.
Сам configure
сценарій генерується з файлу, визначеного програмістом, з ім'ям configure.ac
або configure.in
(застарілим). Я віддаю перевагу .ac
(для токоррекція з ОНФ) , оскільки він відрізняє його від згенерованих файлів і таким чином я можу мати такі правила , як , яка працює . Оскільки це генерований файл, він, як правило, не зберігається в ревізійній системі, такі як Git, SVN, Mercurial або CVS, скоріше файл.Makefile.in
make dist-clean
rm -f *.in
.ac
Детальніше читайте на GNU Autotools . Читайте про make
і Makefile
перше, познайомимося automake
, autoconf
, libtool
і т.д.
.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
SUBDIRS = src
dist_doc_DATA = README.md
README.md
Some doc.
configure.ac
AC_INIT([automake_hello_world], [1.0], [bug-automake@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
src/Makefile
])
AC_OUTPUT
src / Makefile.am
bin_PROGRAMS = autotools_hello_world
autotools_hello_world_SOURCES = main.c
src / main.c
#include <config.h>
#include <stdio.h>
int main (void) {
puts ("Hello world from " PACKAGE_STRING);
return 0;
}
Використання
autoreconf --install
mkdir build
cd build
../configure
make
sudo make install
autoconf_hello_world
sudo make uninstall
Це виводи:
Hello world from automake_hello_world 1.0
Примітки
autoreconf --install
створює кілька файлів шаблонів, які слід відслідковувати Git, в тому числі Makefile.in
. Її потрібно запустити лише перший раз.
make install
встановлює:
/usr/local/bin
README.md
до /usr/local/share/doc/automake_hello_world
На GitHub вам спробувати.
autoconf
і automake
:1) Autoconf - створює транспортується конфігураційний скрипт
(який установник буде пізніше працювати , щоб зробити Makefile )
2) Automake - створює транспортується Makefile.in файл даних
(який налаштувати пізніше буде читати , щоб зробити Makefile )
configure
, make
і sudo make install
:./configure # Creates Makefile (from Makefile.in).
make # Creates the application (from the Makefile just created).
sudo make install # Installs the application
# Often, by default its files are installed into /usr/local
Позначення нижче приблизно: входи -> програми -> виходи
DEVELOPER виконує такі:
configure.ac -> Autoconf -> Configure (сценарій) --- (*. ас = токоррекція з ОНФ) configure.in -> Autoconf -> Configure (сценарій) --- ( амортизується Використання configure.ac.)
configure.in
Makefile.am -> Automake -> Makefile.in ----------- (. * Я = токоррекція м ака)
INSTALLER виконує такі:
Makefile.in -> configure -> Makefile (*. In = in put file)
Makefile -> make ----------> (додає нове програмне забезпечення у ваші завантаження чи тимчасовий каталог)
Makefile -> make install -> (ставить нове програмне забезпечення в системні каталоги)
" autoconf - це розширюваний пакет макросів M4, який створює скрипти оболонки для автоматичного налаштування пакетів вихідного програмного коду. Ці сценарії можуть адаптувати пакунки до багатьох видів UNIX-подібних систем без ручного втручання користувача. Autoconf створює сценарій конфігурації для пакета з файл шаблону, в якому перераховані функції операційної системи, якими може користуватися пакет, у вигляді макровикликів M4. "
" automkeke - це інструмент для автоматичного генерування файлів 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
автоматизувати герерати Makefile.in з Makefile.am
конфігурує генерує Makefile з Makefile.in
Наприклад:
$]
configure.in Makefile.in
$] sudo autoconf
configure configure.in Makefile.in ...
$] sudo ./configure
Makefile Makefile.in
.in
?