Как заставить скрипт конфигурации искать библиотеку - PullRequest
2 голосов
/ 01 октября 2009

Я пытаюсь написать файл configure.ac так, чтобы результирующий скрипт configure искал каталог библиотеки, содержащий данную статическую библиотеку, например, libsomething.a. Как я могу это сделать? На данный момент у меня есть проверка только одного местоположения:

AC_CHECK_FILE([/usr/local/lib/libsomething.a],[AC_SUBST(libsomething,"-L/usr/local/lib -lsomething")],[AC_SUBST(libcfitsio,'')])

Но я хочу, чтобы он попытался найти его автоматически. И если библиотека не находится в одном из местоположений по умолчанию, я хотел бы настроить, чтобы сказать, что библиотека не найдена и что пользовательское местоположение может быть указано с помощью --use -thing = path, как это обычно делается. Поэтому мне также нужно проверить, указан ли --use-что-то = путь. Я довольно новичок в создании файлов конфигурации, и документация по M4 не очень проста, поэтому буду признательна за любую помощь.

Спасибо!

Ответы [ 2 ]

15 голосов
/ 02 октября 2009

Настройка не выполняется для поиска , где установлены библиотеки. он должен только убедиться, что они доступны для компоновщика. Если пользователь установил их в другом месте, он знает, как вызвать ./configure CPPFLAGS=-I/the/location/include LDFLAGS=-L/the/location/lib, чтобы инструменты нашли библиотеку (это объясняется в выводе --help configure и в стандартном файле INSTALL).

Также макросы --with-package и --enable-package не должны использоваться для указания путей, в отличие от того, что будут делать многие сторонние макросы. Стандарты кодирования GNU прямо запрещают это использование:

Не используйте опцию --with для укажите имя файла для поиска определенные файлы. Это выходит за рамки из чего --with варианты для.

CPPFLAGS и LDFLAGS уже здесь для решения проблемы, так зачем же перерабатывать и поддерживать другой механизм?

2 голосов
/ 01 октября 2009

Лучший способ понять это - взглянуть на другие макросы autoconf, которые делают что-то подобное. Макросы Autoconf представляют собой сочетание сценария оболочки Bourne и кода M4, поэтому они могут буквально решить любую вычислимую проблему.

Вот ссылка на макрос, который я написал для MySQL ++ , который делает это: mysql ++. M4 .

...