Boost и 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.

Это странно, потому что у меня есть Повышение. Если я удаляю проверку, компиляции кода, и у меня есть установленное Повышение:

$ 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
11
задан petersohn 21 June 2010 в 19:58
поделиться

3 ответа

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++])
16
ответ дан 3 December 2019 в 02:19
поделиться

Вас может заинтересовать github.com/tsuna/boost.m4, который представляет собой набор макросов Autoconf для проверки наличия заголовков и библиотек Boost, а также минимальной версии Boost.

9
ответ дан 3 December 2019 в 02:19
поделиться

В GNU Autoconf Archive также есть коллекция макросов Boost autoconf. Вам, вероятно, понадобится как минимум AX_BOOST_BASE. Там же находятся и другие макросы для других библиотек Boost.

8
ответ дан 3 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: