Эти два файла чаще всего встречаются в проектах с открытым исходным кодом.
Для чего они и как они работают?
Эти два файла чаще всего встречаются в проектах с открытым исходным кодом.
Для чего они и как они работают?
Ответы:
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
средство расширения , что это вход для 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.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
Например:
$]
configure.in Makefile.in
$] sudo autoconf
configure configure.in Makefile.in ...
$] sudo ./configure
Makefile Makefile.in
.in
?