LINUX.ORG.RU

как остановить configure в случае невыполнения условия?


0

1

Есть у меня ext/hash_map в старом г++, есть у меня unordered_map в новом. Что надо писать в configure.in, чтобы только в случае отсутствия обоих файлов configure прекращал свою работу с сообщением об ошибке, а не обламываться уже при компиляции таким кодом?

#ifdef HAVE_UNORDERED_MAP
#include <unordered_map>
typedef std::unordered_map hash_map_t;
#elif defined HAVE_EXT_HASH_MAP
#include <ext/hash_map>
typedef __gnu_cxx:hash_map hash_map_t;
#else
#error "No hash container was found."
#endif

Ответ на: комментарий от yoghurt
AC_CHECHK_HEADERS([ext/hash_map unordered_map], [], [AC_MSG_ERROR([jopa!!])])

так? тогда если один файл будет отсутствовать, то вылетит. а надо чтобы только если оба два.

talks-anonymous
() автор топика
Ответ на: комментарий от talks-anonymous

Проверяешь один хедер, выставляешь локальную переменную в true/false. Проверяешь второй хедер, выставляешь другую локальную переменную в true/false. Потом смотришь: если обе - false, то стоп.

yoghurt ★★★★★
()
Ответ на: комментарий от talks-anonymous

Вот тебе пример. Возможно, не совсем корректный, но УМВР

kqueue_support=no
AC_CHECK_HEADERS([sys/event.h],
[
    AC_CHECK_FUNCS(kqueue,,AC_MSG_ERROR(No kqueue detected in your system!))
    AC_CHECK_FUNCS(kevent,,AC_MSG_ERROR(No kevent detected in your system!))
    kqueue_support=yes
],
[
    AM_COND_IF(LINUX,
    [
        echo "Host system in GNU/Linux, enabling target "test" only"
        kqueue_support=no
    ],
    AC_MSG_ERROR(No sys/kqueue.h found in your system!))
])

AM_CONDITIONAL(BUILD_LIBRARY, [test "$kqueue_support" = "yes"])
yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

понел, спасибо. сделал так:

AC_CHECK_HEADER([unordered_map], [have_unordered_map=yes], [have_unordered_map=no])
AC_CHECK_HEADER([ext/hash_map], [have_ext_hash_map=yes], [have_ext_hash_map=no])
AS_IF([test $have_unordered_map = yes || test $have_ext_hash_map = yes], [],
            [AC_MSG_ERROR([Neither unordered_map nor ext/hash_map were found.])])
talks-anonymous
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.