Поскольку fftw3
появляется для установки *.pc
файлов, я бы использовал макросы на основе pkg-config
в configure.ac
аналогично
PKG_CHECK_MODULES([FFTW3], [fftw3])
или, если хотитечтобы быть немного более полезным для людей, собирающих вашу библиотеку, что-то вроде
PKG_CHECK_MODULES([FFTW3], [fftw3], [],
[AC_MSG_ERROR([fftw3 devel package not found])])
Конечно, для установки pkg-config
потребуется autoreconf
и configure
времени.
Если кто-то установил fftw3
в необычном месте, он может добавить каталог установки файлов *.pc
в переменную среды PKG_CONFIG_PATH
.
В файле Makefile.am
, где задайте вашlibfoo
библиотека, вы можете добавить строки, такие как
libfoo_CFLAGS += $(FFTW3_CFLAGS)
libfoo_LIBADD += $(FFTW3_LIBS)
Если вы хотите поймать людей, которые пытаются запустить autoreconf
в вашем исходном коде без установки pkg-config
, вы можете добавить строкуна configure.ac
, чтобы убедиться, что макрос PKG_CHECK_MODULES
autoconf m4 определен:
m4_pattern_forbid([PKG_CHECK_MODULES])dnl
Хотя это редко встречается в дикой природе.
Преимущество перед встроенным AC_CHECK_LIB
Макросы & Co состоят в том, что файлы *.pc
могут определять больше информации.Например,
[user@host ~]$ pkg-config --libs fftw3
-lfftw3
не содержит сюрпризов, но
[user@host ~]$ pkg-config --libs fftw3q
-lfftw3q -lquadmath
может содержать неожиданные дополнительные флаги.В дистрибутивные пакеты также может быть добавлена информация, специфичная для системы.
ИМХО, когда зависимость доставляет *.pc
файлов, использование PKG_CHECK_MDOULE
очень предпочтительнее использования AC_CHECK_LIB
.