2013-07-03 7 views
23

Gdy próbuje zbudować Boost 1.54 dla Visual Studio 2013 Preview (MSVC12) ostrzega:W jaki sposób mogę zwiększyć wydajność dzięki nowemu podglądowi programu Visual Studio 2013?

Unknown compiler version - please run the configure tests and report the results

a następnie kończy się niepowodzeniem z błędem:

boost_1_54_0\boost/iterator/detail/facade_iterator_category.hpp(166) : error C2039: 'assert_not_arg' : is not a member of 'boost::mpl'

I wygląda starych bibliotekami z MSVC11 nie są kompatybilne.

Naprawdę, naprawdę chcę przetestować nową wersję IDE/Compiler i potrzebuję wzmocnienia. Czy możliwe jest użycie boost z nowym podglądem Visual Studio 2013?

Odpowiedz

24

Tak. To jest możliwe.

Możliwe rozwiązania to:

  1. Spróbuj zbudować Boost 1.53: nie zbyt świeże, ale z jakiegoś dziwnego powodu buduje dobrze.
  2. Jeśli naprawdę potrzebujeszpotrzebujesz Boost 1.54 (nowa biblioteka Log wygląda dobrze :)), spróbuj zastosować łatę diff this do swojego dystrybutora Boost 1.54. Najlepiej nadaje się do wersji 84920, ale możesz spróbować także innych. Zauważ, że nie jestem autorem tej łaty.
  3. Spróbuj uzyskać najnowszą wersję z Subversion: svn co http://svn.boost.org/svn/boost/trunk boost-trunk. Przez pewien czas, kiedy to czytasz, problem może zostać już naprawiony przez autorów.

EDIT: 26 sie 2013

Wygląda ludzie przypominającego stałe te problemy. Ostatnia aktualizacja SVN svn co http://svn.boost.org/svn/boost/trunk boost-trunk buduje dobrze. Dzięki nim!

EDIT: 4 gru 2013

Cytat TheArtTrooper komentarza:

Boost 1.55.0 builds with the Visual Studio 2013 RTM without any additional patches

okazji zwiększając!

+0

Czy mógłbyś wyjaśnić, dlaczego następujący potrzebne w patch: '#if _MSC_VER <1800 && (! _MSC_FULL_VER <170051025 || określone (BOOST_MSVC_ENABLE_2012_NOV_CTP))' –

+0

Oto łatka dodaje tylko sprawdzić, czy wersja msvc jest niższa niż 1800 (Visual Studio 2013, inaczej "msvc12") i łączy go z oryginalnymi sprawdzeniami. Oryginalna linia sprawdza, czy msvc nie zawiera "aktualizacji 3" lub aktualizacji kompilatora z listopada. Jeśli sprawdzenie wersji zakończy się niepowodzeniem, ograniczenie uprawnień do nie używania niektórych funkcji C++ 11, że nie są dostępne poprzednie wersje msvc. Zauważ, że nie jestem autorem tej łatki (dodam to do odpowiedzi) – Drop

+0

Ok Widzę.W rzeczywistości pierwotny warunek wydaje się być * silniejszy * niż dodatek '_MSC_VER <1800', więc wydaje się, że łatanie tej linii było niepotrzebne. –

11

Jeśli używasz funkcji automatycznego łączenia, musisz również dodać opcję boost/config/auto_link.hpp. Zmieniłem plik:

// 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__) 
+2

Zwiększenie wydajności 1.55.0 przy użyciu programu Visual Studio 2013 RTM bez żadnych dodatkowe łatki. – TheArtTrooper

4

udało mi się zbudować Boost, 1,54 (oraz projekt w zależności od tego) dzięki several patches provided by Lars Viklund. W chwili pisania tego tekstu dwie pierwsze poprawki zostały przesłane do SVN - wersja 85177.

0

Miałem ten problem z Visual Studio 2013 Update 4 i Boost 1.54, aktualizacja do Boost 1.57 naprawiła to.

Powiązane problemy