我发现GCCXML不再被维护(我认为最后一个版本来自他们的CVS存储库2009)。人们通常建议查看clang,但我找不到描述如何生成类似输出的综合文档。不一定是XML,而是可解析(有文档,如果是二进制或模糊)格式的相同信息。如果有办法从最近的gcc版本中获取相同的信息,那也没关系。
这是一个用于动态调用C ++代码的业余爱好项目。我知道类似的项目(pygccxml,xrtti,openc ++),但重点是制作它,为了好玩。
答案 0 :(得分:3)
以前有一种方法可以使用Clang打印xml转储,但它或多或少受到支持并已被删除。有开发人员选择在不同阶段获得转储,但格式是供人类使用,而且不稳定。
对Clang用户的建议一直是代码集成:
RecursiveASTVisitor
实现libclang
。与gcc不同,clang被设想为一组要重用的库 ,因此尝试为某些clang输出编写解析器没有多大意义:它只是更多的错误 - 而不仅仅是在源头上消费信息。
答案 1 :(得分:1)
您可以使用基于Clang的CastXML生成XML文件。
答案 2 :(得分:0)
你可以编写一个GCC插件,或者更好的是MELT扩展名来编写代码。你需要一个GCC 4.6或更高版本(4.7即将发布)。
然而,扩展GCC,无论是通过C编码的插件还是更好的扩展编码在MELT(适用于扩展GCC的域特定语言)中的扩展都需要一些时间,因为您需要了解并处理大部分主要的GCC内部表示(Gimple和Tree-s)。
如果您想使用MELT,我很乐意为您提供帮助。