Boost и Autoconf
Я делаю проект, который использует Autoconf. В 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.
Это странно, потому что у меня есть Boost. Если я удалю проверку, код компилируется, и у меня установлен Boost:
$ 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
Ответы
Ответ 1
AC_CHECK_HEADERS фактически выполняет проверку компиляции, а не проверку существования. Таким образом, вы должны установить поддержку С++ для тестов компиляции, чтобы компилировать заголовки boost (по умолчанию это C, docs here):
AC_LANG_PUSH([C++])
AC_CHECK_HEADERS([boost/foreach.hpp], [],
[AC_MSG_ERROR(You need the Boost libraries.)])
AC_LANG_POP([C++])
Ответ 2
Не совсем ответ - попробуйте boost.m4, если вы хотите использовать Boost с autoconf.
Ответ 3
Также имеется коллекция макросов Boost autoconf в Архив Autoconf GNU. Вероятно, вам понадобится как минимум AX_BOOST_BASE. Существуют и другие макросы для других Boost libs.