【问题标题】:How do I build boost with new Visual Studio 2013 preview?如何使用新的 Visual Studio 2013 预览版构建提升?
【发布时间】:2013-06-30 17:15:39
【问题描述】:

当尝试为 Visual Studio 2013 Preview (MSVC12) 构建 Boost 1.54 时,它会发出警告:

未知的编译器版本 - 请运行配置测试并报告 结果

然后失败并出现错误:

boost_1_54_0\boost/iterator/detail/facade_iterator_category.hpp(166) : 错误 C2039:“assert_not_arg”:不是“boost::mpl”的成员

看起来 MSVC11 中的旧库不兼容。

我真的非常想测试新的 IDE/Compiler 版本并且需要提升。那么,是否可以在新的 Visual Studio 2013 Preview 中使用 boost?

【问题讨论】:

    标签: c++ visual-studio boost


    【解决方案1】:

    是的。这是可能的。

    可能的解决方案是:

    1. 尝试构建Boost 1.53:不是太新鲜,但出于某种奇怪的原因,它构建得很好。
    2. 如果您真的非常需要 Boost 1.54(新的 Log 库看起来不错 :)),请尝试将 this diff-patch 应用到您的 Boost 1.54 发行版。它最适合版本 84920,但您也可以尝试任何其他版本。请注意,我不是此补丁的作者。
    3. 尝试使用Subversion 获取最新版本: svn co http://svn.boost.org/svn/boost/trunk boost-trunk。在您阅读本文时,问题可能已经由贡献者修复。

    编辑:2013 年 8 月 26 日

    看起来 boost 的人解决了这些问题。最新的 SVN 修订版 svn co http://svn.boost.org/svn/boost/trunk boost-trunk 构建良好。感谢他们!

    编辑:2013 年 12 月 4 日

    引自 TheArtTrooper 评论:

    Boost 1.55.0 使用 Visual Studio 2013 RTM 构建,没有任何 附加补丁

    快乐提升!

    【讨论】:

    • 您能否解释一下为什么补丁中需要以下内容:#if _MSC_VER < 1800 && (_MSC_FULL_VER < 170051025 || !defined(BOOST_MSVC_ENABLE_2012_NOV_CTP))
    • 这里的补丁只是添加了检查 msvc 版本是否低于 1800(Visual Studio 2013,又名“msvc12”)并将其与原始检查相结合。原始行检查 msvc 是否不包含“update 3”或 11 月的编译器更新。如果版本检查失败,boost 将限制为不使用某些 C++11 功能,这些功能是以前的 msvc 版本不支持的。请注意,我不是这个补丁的作者(我会将这个添加到答案中)
    • 好的,我明白了。实际上,原来的条件似乎比_MSC_VER < 1800加法,所以看来修补这条线是不必要的。
    • 是的,确实是多余的 =)
    • 我已经用一个小补丁编译了 1_55_0 版本的 tar 球:stackoverflow.com/a/20815896/85371
    【解决方案2】:

    如果您使用自动链接 boost 功能,您还需要修补 boost/config/auto_link.hpp。我将文件更改为:

        // vc10:
    #    define BOOST_LIB_TOOLSET "vc100"
    
    #  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1800)
    
         // vc11:
    #    define BOOST_LIB_TOOLSET "vc110"
    
    #  elif defined(BOOST_MSVC)
    
         // vc12:
    #    define BOOST_LIB_TOOLSET "vc120"
    
    #  elif defined(__BORLANDC__)
    

    【讨论】:

    • Boost 1.55.0 使用 Visual Studio 2013 RTM 构建,无需任何额外补丁。
    【解决方案3】:

    感谢several patches provided by Lars Viklund,我能够构建 Boost 1.54(以及依赖它的项目)。在撰写本文时,前两个补丁已提交给 SVN - 修订版 85177。

    【讨论】:

      【解决方案4】:

      我在 Visual Studio 2013 Update 4 和 Boost 1.54 中遇到了这个问题,更新到 Boost 1.57 解决了这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-23
        • 2014-02-28
        • 1970-01-01
        • 2022-01-22
        • 2013-10-26
        • 1970-01-01
        相关资源
        最近更新 更多