Я работаю в интерфейсе Python для libclang
.
Я пытаюсь разобрать AST из Apple Metal Headers.
Есть ли способ открыть другие металлические заголовки, импортированные из 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
. В качестве примера используется металл.