2012-11-04 16 views
5

używam biblioteki wxWidget i mam następujący problem:XCode 4.5 'TR1/type_traits' file not found

#if defined(HAVE_TYPE_TRAITS) 
    #include <type_traits> 
#elif defined(HAVE_TR1_TYPE_TRAITS) 
    #ifdef __VISUALC__ 
     #include <type_traits> 
    #else 
     #include <tr1/type_traits> 
    #endif 
#endif 

tu #include nie został znaleziony. Używam kompilatora Apple LLVM 4.1. (z dialektem C++ 11). Jeśli przejdę do kompilatora LLVM GCC 4.2, nie mam tam błędu, ale głównym problemem jest to, że wszystkie załączenia C++ 11 nie będą działać.

Jak mogę użyć kompilatora GCC, ale ze standardem C++ 11 lub sprawić, aby LLVM mógł znaleźć?

każda pomoc byłaby naprawdę doceniana.

Odpowiedz

12

Zgaduję, że masz "Standardową bibliotekę C++" ustawioną na "libC++". W takim przypadku potrzebujesz <type_traits>, a nie <tr1/type_traits>. libC++ daje bibliotekę C++ 11, podczas gdy libstdC++ (która jest również domyślna w Xcode 4.5) daje bibliotekę C++ 03 z obsługą tr1.

Jeśli chcesz, możesz automatycznie wykrywa, które biblioteka używasz z:

#include <ciso646> // detect std::lib 
#ifdef _LIBCPP_VERSION 
// using libc++ 
#include <type_traits> 
#else 
// using libstdc++ 
#include <tr1/type_traits> 
#endif 

lub w przypadku, może:

#include <ciso646> // detect std::lib 
#ifdef _LIBCPP_VERSION 
// using libc++ 
#define HAVE_TYPE_TRAITS 
#else 
// using libstdc++ 
#define HAVE_TR1_TYPE_TRAITS 
#endif 
+0

Dziękuję, to rozwiązało problem – Aranir

+0

Dzięki - miał ten sam problem i zmiany do biblioteki GNU rozwiązać to dla mnie :-) –

0

nieco zmodyfikowany powyższy kod, aby uniknąć kompilatora Reklamacje:

wklej następujący w strvararg.h tuż przed #ifdefined (HAVE_TYPE_TRAITS)

#include <ciso646> // detect std::lib 
#ifdef _LIBCPP_VERSION 
// using libc++ 
#ifndef HAVE_TYPE_TRAITS 
#define HAVE_TYPE_TRAITS 1 
#endif 
#else 
// using libstdc++ 
#ifndef HAVE_TR1_TYPE_TRAITS 
#define HAVE_TR1_TYPE_TRAITS 1 
#endif 
#endif 
0

To jest polecenie, którego użyłem do zbudowania wxWidgets przeciwko libC++ (LLVM C++ Standard Library). Powinien działać na Yosemite i później (przynajmniej dopóki znów zrywa jabłko wszystko):

mkdir build-cocoa-debug 
cd build-cocoa-debug 
../configure --enable-debug --with-macosx-version-min=10.10 
make -j8 #This allows make to use 8 parallel jobs 
Powiązane problemy