我正在使用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.h
,MTLBlitCommandEncoder.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.h
或Metal/MTLTypes.h
,我不知道如何打开正确的文件。
我希望能够递归地向后浏览所有导入内容或包含在framework
中。这里以金属为例。