包括C++ 11 个带有 Clang / LLVM 的标头

Including C++ 11 headers with Clang / LLVM

本文关键字:LLVM Clang C++ 包括      更新时间:2023-10-16

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

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

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

请参阅 http://clang.llvm.org/get_started.html。

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

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

  • clang/lib/Frontend/InitHeaderSearch 中查找注释"FIXME:临时黑客:硬编码路径".cpp并更改下面的行以包含该路径。

虽然标准库附带了编译器的发行版,但当您自己构建它时,您仍然需要构建标准库本身。它的某些组件可能仅是标头,但并非所有组件都是。

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