Xcode如何知道项目中的符号?

时间:2011-10-31 20:02:37

标签: objective-c xcode doxygen clang abstract-syntax-tree

我正在看doxygene并且我注意到它对于Objective-C的输出不是最优的,所以我看着doxygene的内部(其中所有语法分析器合并成一个巨大的blob),然后我决定它是要花很多工作才能弄清楚从哪里开始。

所以我想,好吧让我们从Objective-c源文件创建一个字典/树开始,它似乎已经是Xcode(因为符号可以搜索)。它似乎以某种方式使用LLVM“clang”。有谁知道如何调用“clang”来返回项目/文档中符号的结构?

1 个答案:

答案 0 :(得分:1)

为此,Xcode不直接使用“clang ++”二进制文件。 clang ++二进制文件实际上是一个围绕Clang C ++库的非常小包装器。 Xcode使用libclang(C ++库的C包装器)来满足其C ++解析需求。

因此,要获得所需信息,您需要使用libclang。演讲的On this page are the slides and video Doug Gregor(Clang的主要开发者)在2010年开发会议上发表了题为“libclang:思考超越编译器”的文章。

clang社区中的许多人都表示有兴趣用clang替换Doxygen的解析器。所以你并不孤单。但是,我认为这不是一个小项目。