Я делаю проект, который использует Автоконференцию. У Меня есть следующее в configure.ac
:
AC_CHECK_HEADERS([boost/foreach.hpp], [],
[AC_MSG_ERROR(You need the Boost libraries.)])
Когда я работаю configure
, это говорит, что не может найти этот заголовочный файл:
checking boost/foreach.hpp usability... no
checking boost/foreach.hpp presence... no
checking for boost/foreach.hpp... no
configure: error: You need the Boost libraries.
Это странно, потому что у меня есть Повышение. Если я удаляю проверку, компиляции кода, и у меня есть установленное Повышение:
$ find /usr/include -name foreach.hpp
/usr/include/boost/foreach.hpp
/usr/include/boost/test/utils/foreach.hpp
Обратите внимание, что я сделал точно то же с SDL, и это работает.
AC_CHECK_HEADERS([SDL/SDL.h], [],
[AC_MSG_ERROR(You need the SDL development library.)])
...
checking SDL/SDL.h usability... yes
checking SDL/SDL.h presence... yes
checking for SDL/SDL.h... yes
AC_CHECK_HEADERS на самом деле выполняет проверку компиляции, а не проверку существования. Поэтому вам нужно установить поддержку C++ для проверки компиляции, чтобы заголовки boost компилировались (по умолчанию это C, документация здесь):
AC_LANG_PUSH([C++])
AC_CHECK_HEADERS([boost/foreach.hpp], [],
[AC_MSG_ERROR(You need the Boost libraries.)])
AC_LANG_POP([C++])
Вас может заинтересовать github.com/tsuna/boost.m4, который представляет собой набор макросов Autoconf для проверки наличия заголовков и библиотек Boost, а также минимальной версии Boost.
В GNU Autoconf Archive также есть коллекция макросов Boost autoconf. Вам, вероятно, понадобится как минимум AX_BOOST_BASE. Там же находятся и другие макросы для других библиотек Boost.