【发布时间】:2014-08-17 11:03:26
【问题描述】:
我想在我的 ios 应用中使用 libclang 来突出显示语法。
我已经为 ios (armv7) 交叉编译了 clang,我可以将它用于标记化、诊断等。但是当我尝试标记化/获取具有 #include <stdio.h> 或 @ 的 .cpp 文件的诊断信息时987654325@ 或 cstdio.h libclang 输出找不到头文件的致命诊断。
我是否必须交叉编译libc++,将交叉编译的头文件和静态库上传到设备并根据-I 添加到 libclang 命令行参数?
【问题讨论】:
-
我想配置armv7的头文件应该足够了,因为你不需要链接
-
我遇到标题搜索错误,所以它似乎需要它们的路径。我可以将头文件从 iOS SDK 文件夹复制到 iOS 设备并添加 -I 吗?
-
使用
-I应该可以。您还可以配置您的编译器,以便默认包含搜索路径,但我不知道该怎么做。 -
我已将标头从 libcxx/include 复制到设备并添加 -I 和标头路径。现在对于使用
#include <iostream>的文件,我遇到了下一个错误输出的 clang 崩溃:Assertion failed: (Capacity - Index == TypeLoc::getFullDataSizeForType(T) && "incorrect data size provided to CreateTypeSourceInfo!"), function pushImpl, file /Users/asmirnov/Documents/dev/src/llvm_34_ios/tools/clang/lib/Sema/TypeLocBuilder.cpp, line 133. -
来自 libcxx 包含文件夹 (llvm.org/svn/llvm-project/libcxx/trunk/include/cstdio) 的 BTW cstdio 头文件具有
#include <stdio.h>(第 100 行),并且 libcxx 头文件夹中没有 stdio.h 文件。这是误导,我得到 libclang 诊断 - 致命错误
标签: ios clang libstdc++ libc++