找不到XCode 4.5'tr1 / type_traits'文件

时间:2012-11-04 13:37:36

标签: c++ c++11 wxwidgets xcode4.5

我使用wxwidget库,我遇到以下问题:

#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

此处未找到#include。我使用Apple LLVM编译器4.1。 (使用c ++ 11方言)。 如果我切换到LLVM GCC 4.2编译器,我没有错误,但主要问题是所有c ++ 11包含都不起作用。

我如何使用GCC编译器,但使用c ++ 11标准或使LLVM可以找到?

任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:13)

我猜你将“C ++标准库”设置为“libc ++”。如果是这种情况,您需要<type_traits>,而不是<tr1/type_traits>。 libc ++为您提供了一个C ++ 11库,而libstdc ++(也是Xcode 4.5中的默认值)为您提供了一个支持tr1的C ++ 03库。

如果需要,您可以自动检测您正在使用的库:

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

或者在你的情况下:或者

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

答案 1 :(得分:5)

这是我用来构建针对libc ++(LLVM C ++标准库)的wxWidgets的命令。应该在Yosemite及其后期工作(至少在Apple再次破坏一切之前):

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

答案 2 :(得分:0)

稍微修改上面的代码,以避免编译器投诉:

在#ifdefined(HAVE_TYPE_TRAITS)

之前将以下内容粘贴到strvararg.h中
#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