Интернет, компьютеры, софт и прочий Hi-Tech

Подписаться через RSS2Email.ru

Система конфигурирования и сборки GNU

Система конфигурирования и сборки GNU

Иан Ланс Тейлор

Начало работы

Написание Makefile.am

Вы должны написать файл `Makefile.am'. Это — файл, поступающий на вход automake, и мануал automake детально описывает, как этот файл должен выглядеть.

Команды automake в `Makefile.am' обычно выглядят как переменные, назначаемые в `Makefile'. Утилита automake распознает имена специальных переменных и, если нужно, автоматически добавляет в вывод правила make.

Для каждой директории вашего пакета должен существовать один файл `Makefile.am'. Для каждой директории с поддиректориями файл `Makefile.am' должен содержать строку

SUBDIRS = dir dir ...

где каждый из dir является именем поддиректории.

Для каждого `Makefile.am' в макросе `AC_OUTPUT' в файле `configure.in' должен иметься соответствующий `Makefile'.

Каждый `Makefile.am', написанный на Cygnus, должен содержать строчку

AUTOMAKE_OPTIONS = cygnus

Она переводит automake в режим Cygnus. Подробности смотрите в мануале по automake.

Вы можете включить номер той версии `automake', которую используете, в строку `AUTOMAKE_OPTIONS'. Например:

AUTOMAKE_OPTIONS = cygnus 1.3

Это позволяет предотвратить использование более ранних версий `automake' и, возможно, предотвратить получение неправильного `Makefile.in'.

Если ваш пакет собирается в программу, то в директории, где эта программа собирается, вам, как правило, нужна будет строка вроде следующей:

bin_PROGRAMS = program

где program — это название программы. Затем вам понадобится строка типа следующей:

program_SOURCES = file file ...

где каждый file — это имя файла с исходным кодом, который линкуется с программой (напр., `foo.c').

Если ваш пакет предусматривает сборку какой-то библиотеки, и вы не хотите, чтобы эта библиотека собиралась как разделяемая, то в директории, где эта библиотека собирается, вы можете задать строку вроде следующей (как это обычно и делается):

lib_LIBRARIES = libname.a

где `libname.a' — это имя библиотеки. Вам также понадобится строчка вроде следующей:

libname_a_SOURCES = file file ...

где каждый file — это имя файла с исходным кодом, который добавляется в библиотеку.

Если ваш пакет предусматривает сборку какой-то библиотеки, и вы хотите разрешить сборку этой библиотеки как разделяемой, то в директории, где собирается эта библиотека, вы можете задать строку вроде следующей (как это обычно и делается):

lib_LTLIBRARIES = libname.la

Использование `LTLIBRARIES' и расширения `.la', указывает на то, что библиотека была собрана с помощью libtool. Как обычно, вам также понадобится строчка вроде следующей:

libname_la_SOURCES = file file ...

Строки `bin' и `lib', которые фигурируют выше в `bin_PROGRAMS' и `lib_LIBRARIES', находятся там неспроста. Они указывают на специальные директории, которые могут быть установлены в `configure' опциями `--bindir' и `--libdir'. Если эти опции не используются, то умолчальные значения определяются опциями `--prefix' или `--exec-prefix' для `configure'. Таким образом, можно использовать другие имена, если программа или библиотека должны быть установлены в какую-то другую директорию.

Файл `Makefile.am' может и не содержать почти ничего, что может содержаться в обычном `Makefile'. Система automake поддерживает множество других специальных переменных и прочих выражений.

В мануале по automake вы можете найти дополнительную информацию.


Назад Вперед
Начало работы Написание acconfig.h

Перевод: Дмитрий Скоробогатов, 28.11.2011.
Оригинальный текст можно найти по адресу http://www.airs.com/ian/configure/configure_2.html.


Предыдущие публикации:

Биржа долевых инвестиций SIMEX.

Последнее редактирование: 2011-11-28 01:35:58

Метки материала: makefile, написание makefile, makefile.am, gnu, система конфигурирования, система конфигурирования и сборки, компиляция, проект gnu, по, бесплатные программы, бесплатное по, софт, разработка по, программное обеспечение, спо, документация для программиста

Оставьте, пожалуйста, свой комментарий к публикации

Представиться как     Антибот:
   

Просьба не постить мусор. Если вы хотите потестить xBB, воспользуйтесь кнопкой предварительного просмотра на панели инструментов xBBEditor-а.


© 2007-2017, Дмитрий Скоробогатов.
Разрешается воспроизводить, распространять и/или изменять материалы сайта
в соответствии с условиями GNU Free Documentation License,
версии 1.2 или любой более поздней версии, опубликованной FSF,
если только иное не указано в самих материалах.