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

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

Autoconf

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


Работа с внешним программным обеспечением

@anchor{External Software}

Некоторые пакеты требуют, или могут при случае использовать другие пакеты программного обеспечения, уже установленные в системе. Пользователь может указать скрипту configure с помощью ключей командной строки, какие внешние пакеты надо использовать. Ключи имеют одну из следующих форм:

–with-package[=arg]
–without-package

Например, `–with-gnu-ld’ означает, что надо работать с компоновщиком GNU linker вместо других компоновщиков. `–with-x’ означает работу с X Window System.

Пользователь может задать аргумент, поставив после имени пакета символ `=’ и нужный аргумент. Вы можете задать аргумент, равный `no’ для пакетов, которые используются по умолчанию; он сообщает о том, что этот пакет не надо использовать. Аргумент, который не равен ни `yes’, ни `no’, может включать имя или номер версии другого пакета, для более точного указания, с каким пакетом эта программа предполагает работать. Если аргумент не задан, то его значение по умолчанию равно `yes’. `–without-package эквивалентно вызову `–with-package=no’.

Скрипты configure не выдают ошибок о ключах `–with-package, которые они не поддерживают. Такое поведение позволяет конфигурировать дерево исходных текстов, содержащее множество пакетов, с помощью скрипта configure верхнего уровня, когда пакеты поддерживают разные ключи, без выдачи фальшивых сообщений об ошибках в ключах, которые поддерживают лишь некоторые пакеты. К сожалению, побочным эффектом этого является то, что ошибка в задании ключей не диагностируется. До сих пор не было предложено лучшего подхода к решению этой проблемы.

Для каждого из внешних пакетов, который может быть использован в файле `configure.in’, должен быть вызван макрос AC_ARG_WITH для определения того, заставил ли пользователь configure использовать этот пакет. Будет ли пакет использоваться по умолчанию или нет, а также то, какие аргументы будут правильны, зависит от вас.

Macro: AC_ARG_WITH (package, help-string [, action-if-given [, action-if-not-given]])
Если пользователь задал configure ключ `–with-package или ключ `–without-package, то выполняются команды командного процессора action-if-given. Если ни один из ключей не задан, то выполняются команды action-if-not-given. Имя package задает другой пакет, с которым должна работать эта программа. Это имя должно содержать только буквы, цифры и знаки минус.

Аргумент ключа командной строки из кода командного процессора action-if-given в переменной командного процессора withval, который в действительности является значением переменной командного процессора with_package, с символами `-’, замененными на символ `_’. Можете использовать эту переменную, если хотите.

Аргумент help-string является описанием ключа, который выглядит примерно так:

  –with-readline         support fancy command line editing

help-string может занимать больше одной строки, если необходима подробная информация. Просто убедитесь, что строка разделена на колонки в выводе `configure –help’. Избегайте использовать символы табуляции в строке помощи. Для того, чтобы сохранить начальные пробелы, нужно поместить строку между символами `[’ и `]’.

Macro: AC_WITH (package, action-if-given [, action-if-not-given])
Это устаревшая версия макроса AC_ARG_WITH, которая не поддерживает использование строки помощи.


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

Comments