如何禁用Boost Concept Check

时间:2012-12-18 10:26:57

标签: c++ visual-studio-2008 boost cpp-netlib

为了使用Visual Studio 2008在Windows下编译C ++ Net Lib项目,我需要禁用概念检查(参见此主题:https://groups.google.com/forum/#!msg/cpp-netlib/G-hM25EnCWA/gdsHBaVfmggJ

编译在Release中有效但在Debug中无效(在.cpp编译中失败)

我通过在包含客户端头之前定义NDEBUG来管理获取头的编译成功。然而,当链接器想要链接Boost.system库的Release版本时,这会失败:当我使用Debug时。我收到这个错误:

6> LINK:致命错误LNK1104:无法打开文件'libboost_system-vc90-mt-1_50.lib'

我想用BOOST_SYSTEM_NO_LIB阻止它,但它仍然希望链接到发行版本(我的projet链接对'libboost_system-vc90-mt-gd-1_50.lib'(调试库))

在包含标题之前是否有一个简单的宏来定义,它将禁用Boost.ConceptCheck的东西,就像它在Release版本中完成一样?我没有在Boost文档中找到任何信息,也没有在头文件本身中找到任何信息。

非常感谢

加埃唐

1 个答案:

答案 0 :(得分:3)

以下是我要做的事情:

#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什么都不做,但我担心它不会发生 防止你的链接器错误,这看起来很模糊。