建设提升与Visual Studio 2013(前preSS) [英] Building boost with Visual Studio 2013 (Express)

查看:111
本文介绍了建设提升与Visual Studio 2013(前preSS)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

拥有使用Visual Studio 2013人成功地构建升压前preSS?

Has anyone successfully built Boost using Visual Studio 2013 Express?

我很困惑,这是否是可能的,只是还没有作为升压网站状态:

I'm confused as to whether or not this is possible just yet as the Boost website states:

已知错误与Visual Studio 2013 / VISUAL C ++ 12。

Known Bugs with Visual Studio 2013/Visual C++ 12.

的Visual Studio 2013发布的释放过程比较晚,所以存在一些尚未解决的问题。这些措施包括:

Visual Studio 2013 was released quite late in the release process, so there exist several unresolved issues. These include:

序列化不能编译包括

这Boost.Container的allocator_traits使用has_member_function_callable_with导致编译错误(#9332)。

Using has_member_function_callable_with from Boost.Container's allocator_traits causes a compile error (#9332).

在库,如无序和多指标,与调用初始化列表重载函数会导致编译错误,与Visual C ++声称重载是模糊的。这是一个Visual C ++的错误,如果有一个很好的解决办法,目前尚不清楚。这不会影响code不使用初始化列表,或者使用不需要的隐式转换(即容器的确切值类型的初始化列表)的初始化列表。

In libraries such as Unordered and MultiIndex, calling overloaded functions with initializer lists can result in a compile error, with Visual C++ claiming that the overloads are ambiguous. This is a Visual C++ bug and it isn't clear if there's a good workaround. This won't affect code that doesn't use initializer lists, or uses an initializer list that doesn't require an implicit conversion (i.e. an initializer list of the container's exact value type).

主题:ex_scoped_thread编译失败(#9333)

Thread: ex_scoped_thread compile fails (#9333).

不过,这张海报说,这是不可能建立使用VS 2013没有任何补丁升压1.55.0。

However, this poster says it is possible to build Boost 1.55.0 using VS 2013 without any patches.

我曾试图建立使用VS 2013升压和我确实也得到至少序列化错误。

I have tried to build Boost using VS 2013 and I do indeed get at least the Serialization error.

推荐答案

我最近建升压使用只是一个小补丁MSVC12(VS2013):

I've recently built Boost on MSVC12 (VS2013) using only a minor patch:

主题:[PATCH]上MSVC2013

Subject: [PATCH] Fixing boost serialization build on MSVC2013

包括修复(手动)

     config_decltype_n3276_new.patch(从<一个href=\"https://svn.boost.org/trac/boost/ticket/9410\">https://svn.boost.org/trac/boost/ticket/9410)

正如你可以看到它从 https://svn.boost.org/trac/boost/结合补丁门票/ 9410 带部分手动修复包括(他们是微不足道的)。

As you can see it combines the patch from https://svn.boost.org/trac/boost/ticket/9410 with some manual include fixes (they were trivial).

这是有效的修补程序:

diff --git a/3rdparty/boost_1_55_0/boost/archive/iterators/transform_width.hpp b/3rdparty/boost_1_55_0/boost/archive/iterators/transform_width.hpp
index 5a5c7b7..8da85ee 100644
--- a/3rdparty/boost_1_55_0/boost/archive/iterators/transform_width.hpp
+++ b/3rdparty/boost_1_55_0/boost/archive/iterators/transform_width.hpp
@@ -29,6 +29,7 @@

#include <boost/iterator/iterator_adaptor.hpp>
#include <boost/iterator/iterator_traits.hpp>
+#include <algorithm>

namespace boost { 
namespace archive {
diff --git a/3rdparty/boost_1_55_0/boost/config/compiler/visualc.hpp b/3rdparty/boost_1_55_0/boost/config/compiler/visualc.hpp
index 695fa94..1c0f4f0 100644
--- a/3rdparty/boost_1_55_0/boost/config/compiler/visualc.hpp
+++ b/3rdparty/boost_1_55_0/boost/config/compiler/visualc.hpp
@@ -180,13 +180,13 @@
#  define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
#  define BOOST_NO_CXX11_VARIADIC_TEMPLATES
#  define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#  define BOOST_NO_CXX11_DECLTYPE_N3276
#endif

// C++11 features not supported by any versions
#define BOOST_NO_CXX11_CHAR16_T
#define BOOST_NO_CXX11_CHAR32_T
#define BOOST_NO_CXX11_CONSTEXPR
-#define BOOST_NO_CXX11_DECLTYPE_N3276
#define BOOST_NO_CXX11_NOEXCEPT
#define BOOST_NO_CXX11_UNICODE_LITERALS
#define BOOST_NO_SFINAE_EXPR
diff --git a/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_fail.cpp b/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_fail.cpp
index 216300c..1c0e6c7 100644
--- a/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_fail.cpp
+++ b/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_fail.cpp
@@ -32,6 +32,6 @@

int main( int, char *[] )
{
-   return boost_no_decltype_n3276::test();
+   return boost_no_cxx11_decltype_n3276::test();
}

diff --git a/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_pass.cpp b/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_pass.cpp
index 35427be..86e3664 100644
--- a/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_pass.cpp
+++ b/3rdparty/boost_1_55_0/libs/config/test/no_decltype_n3276_pass.cpp
@@ -27,11 +27,11 @@
#ifndef BOOST_NO_CXX11_DECLTYPE_N3276
#include "boost_no_decltype_n3276.ipp"
#else
-namespace boost_no_decltype_n3276 = empty_boost;
+namespace boost_no_cxx11_decltype_n3276 = empty_boost;
#endif

int main( int, char *[] )
{
-   return boost_no_decltype_n3276::test();
+   return boost_no_cxx11_decltype_n3276::test();
}

连载作品很好甚至与 EPA便携式存档实施

免责声明这是常规的Visual Studio。它可能会与前VS preSS工作。 (如果您有Windows SDK)

Disclaimer This is with 'regular' Visual Studio. It will probably work with VS Express. (if you have the Windows SDK)

这篇关于建设提升与Visual Studio 2013(前preSS)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆