Алексей Махоткин

домашняя страница

Autoconf

Go to the first, previous, next, last section, table of contents.


Заголовочные файлы конфигурации

@anchor{Configuration Headers}

Когда пакет производит тестирование большого количества символов препроцессора C, то командная строка ключей `-D’, передаваемых компилятору, может получиться достаточно длинной. Это вызывает две проблемы. Первая заключается в том, что вывод результатов команды make будет тяжело читать в поисках ошибок. Вторая и более серьезная заключается в том, что длина командной строки может превысить предельную длину командной строки в некоторых операционных системах. В качестве альтернативы передаче компилятору ключей `-D’, скрипты configure могут создавать заголовочные файлы C, которые содержат директивы `#define’. Макрос AC_CONFIG_HEADER выбирает этот способ выдачи результатов. Макрос должен быть вызван сразу после вызова AC_INIT.

Пакет должен подключить с помощью #include заголовочный файл настройки до подключения остальных заголовочных файлов, чтобы избежать несовместимости в объявлениях (например, если этот файл переопределяет const). Используйте директиву `#include <config.h>’ вместо `#include “config.h”’, и передайте компилятору C ключ `-I.’ (или `-I..’, смотря где находится файл `config.h’). Таким образом, даже если сам каталог с исходными текстами сконфигурирован (например, для создания дистрибутива), то другие сборочные каталоги можно будет сконфигурировать, не используя при этом файл `config.h’ и каталога с исходными текстами.

Macro: AC_CONFIG_HEADER (header-to-create …)
Заставляет AC_OUTPUT создать файлы с именами из разделенного пробелами списка header-to-create, которые будут содержать директивы #define препроцессора C, и заменить `@DEFS@’ в созданных файлах на `-DHAVE_CONFIG_H’ вместо значения DEFS. Обычным значением для header-to-create является `config.h’.

Если header-to-create уже существует и его содержимое не отличается от того, что в него хотят поместить, то он остается неизмененным. Это позволяет вносить некоторые изменения в конфигурацию без ненужной перекомпиляции объектных файлов, которые зависят от данных заголовочных файлов.

Обычно входной файл называется `header-to-create.in’; однако вы можете переопределить имя входного файла, добавив к header-to-create список входных файлов, разделенный двоеточием. Примеры:

AC_CONFIG_HEADER(defines.h:defines.hin)
AC_CONFIG_HEADER(defines.h:defs.pre:defines.h.in:defs.post)

Это позволяет вам сохранить имена в виде, приемлемом для использования в MS-DOS, а также для добавления стандартных кусков кода к файлам.


Go to the first, previous, next, last section, table of contents.

Comments