有没有办法在libclang中打开#import obj-c标头?

时间:2019-05-07 16:49:25

标签: objective-c frameworks clang libclang

我正在使用libclang的python前端。 我正在尝试从Apple Metal标头解析AST。

是否可以打开从Metal/Metal.h导入的其他金属标头?

例如

//
 //  Metal.h
 //  Metal
 //
 //  Copyright (c) 2014 Apple Inc. All rights reserved.
 //

 #import <Metal/MTLDefines.h>
 #import <Metal/MTLTypes.h>
 #import <Metal/MTLBlitCommandEncoder.h>
...

因此,当我运行libclang时,我可以先打开然后解析MTLDefines.h,然后依次解析MTLTypes.hMTLBlitCommandEncoder.h,等等。

目前,我可以获取翻译单位的根目录,以在命令中包含包含指令:

tu = index.parse(header_filename, \ 
     options=clang.cindex.TranslationUnit.PARSE_DETAILED_PROCESSING_RECORD | \
     clang.cindex.TranslationUnit.PARSE_PRECOMPILED_PREAMBLE, \
     args=['-x', 'objective-c'])

但是,当我尝试打开光标下的文件时,文件名是

Metal/MTLDefines.hMetal/MTLTypes.h,我不知道如何打开正确的文件。

我希望能够递归地向后浏览所有导入内容或包含在framework中。这里以金属为例。

0 个答案:

没有答案