Есть ли способ открыть заголовки #import obj-c в libclang? - PullRequest
0 голосов
/ 07 мая 2019

Я работаю в интерфейсе 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. В качестве примера используется металл.

...