【问题标题】:Including C++ 11 headers with Clang / LLVM包括带有 Clang / LLVM 的 C++ 11 标头
【发布时间】:2012-04-20 07:09:00
【问题描述】:

我已经从源代码安装了 clang 和 llvm,并且正在尝试使用新标准的特性编译一些 C++ 代码。

我发现虽然例如使用 for 范围,例如for (i : vector) 工作正常,当我需要导入头文件时遇到问题(找不到头文件),例如<unordered_set><tuple>

我是否需要使用新的 libc++ 来使用这些头文件,或者我只需要进行简单的构建更改?目前我刚刚将 clang 和 llvm 构建到我的主目录中的一个文件夹中,并从那里调用 clang++。

【问题讨论】:

    标签: c++ build c++11 llvm clang


    【解决方案1】:

    http://clang.llvm.org/get_started.html

    如果您打算使用 Clang C++ 支持,您可能需要告诉它如何找到您的 C++ 标准库头文件。如果 Clang 找不到您的系统 libstdc++ 头文件,请按照以下说明操作:

    • gcc -v -x c++ /dev/null -fsyntax-only 获取路径。

    • clang/lib/Frontend/InitHeaderSearch.cpp 中查找注释 "FIXME:temporary hack: hard-coded paths" 并更改以下行包含该路径。

    【讨论】:

    • 好的,但这似乎只是新标准中的标头的问题。
    • 啊哈,可能是因为我的g++ 4.6在非标准的地方
    【解决方案2】:

    虽然标准库随编译器的发行版一起提供,但当您自己构建它时,您仍然需要自己构建标准库。它的一些组件可能只有标题,但并非所有组件都是。

    因此,如果不构建它,您至少需要下载该库。 Clang 可以使用 GCC 的 libstdc++,但他们也有自己的 libc++ 项目。

    【讨论】:

      猜你喜欢
      • 2011-12-20
      • 1970-01-01
      • 2014-09-03
      • 2012-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 2014-04-26
      相关资源
      最近更新 更多