Как отключить Boost Concept Check
Для компиляции проекта C++ Net Lib под Windows с помощью Visual Studio 2008 мне нужно отключить проверку концепции (см. Эту ветку: https://groups.google.com/forum/)
Компиляция работает в Release, но не в Debug (ошибка при компиляции.cpp)
Мне удалось получить компиляцию заголовка успешно, определив NDEBUG перед включением заголовка клиента. Тем не менее, это не удается позже, когда компоновщик хочет создать ссылку на версию Release библиотеки Boost.system: пока я использую Debug. Я получаю эту ошибку:
6> ССЫЛКА: фатальная ошибка LNK1104: не удается открыть файл 'libboost_system-vc90-mt-1_50.lib'
Я хотел предотвратить это с помощью BOOST_SYSTEM_NO_LIB, но он по-прежнему хочет ссылаться на версию релиза (мои ссылки на projet 'libboost_system-vc90-mt-gd-1_50.lib' (библиотека отладки))
Существует ли простой макрос для определения перед включением заголовка, который отключит материал Boost.ConceptCheck, как это делается в сборке выпуска? Я не нашел никакой информации ни в документации Boost, ни в самих заголовочных файлах.
Большое спасибо
Gaetan
1 ответ
Вот что я бы сделал:
#include <boost/concept/assert.hpp>
// redefine concept assert, suppress the warning etc.
#undef BOOST_CONCEPT_ASSERT
#define BOOST_CONCEPT_ASSERT(Model)
#include <boost/concept_check.hpp>
struct not_an_iterator
{};
int main()
{
BOOST_CONCEPT_ASSERT((InputIterator<not_an_iterator>));
return 0;
}
Это заставит concept_assert ничего не делать, но я боюсь, что это не предотвратит ошибки вашего компоновщика, которые кажутся неясными.