Shiboken2 в PySide 2 удаляет пути к исходным заголовочным файлам

Я хочу обернуть много классов, написанных на C ++ с помощью PySide 2«s shiboken2 чтобы быть доступным в питон. Однако при попытке обернуть более сложный код возникают некоторые проблемы.

У меня есть два разных файла с двумя разными заголовками и в разных пространствах имен:

#include <gui/main.h>

и второй:

#include <back/foo.h>

Схема этого кода написана на app.xml быть готовым к упаковке:

<typesystem package="app">
<load-typesystem name="typesystem_core.xml" generate="no"/>
<load-typesystem name="typesystem_widgets.xml" generate="no"/>
<namespace-type name="gui">
<object-type name="Main"/>
</namespace-type>
<namespace-type name="back">
<object-type name="Foo"/>
</namespace-type>
</typesystem>

Но упакованный код, кажется, забывает оригинальные пути, и поэтому файлы заголовка не могут быть найдены:

#include <main.h>
#include <foo.h>

Мне интересно, как это исправить. Код, конечно, компилируется, когда я вручную копирую эти файлы в папку, где находится код переноса; однако в нашем приложении много заголовков с одинаковыми именами, и поэтому эту проблему нужно решить.

1

Решение

С небольшой помощью разработчика # Кварта-PySide Мне удалось решить эту проблему, которая беспокоила меня некоторое время.

<typesystem package="app">
<extra-includes>
<include file-name="gui/main.h" location="global"/>
<include file-name="back/foo.h" location="global"/>
</extra-includes>
<load-typesystem name="typesystem_core.xml" generate="no"/>
<load-typesystem name="typesystem_widgets.xml" generate="no"/>
<namespace-type name="gui">
<include file-name="gui/main.h" location="global"/>
<object-type name="Main">
<include file-name="gui/main.h" location="global"/>
</object-type>
</namespace-type>
<namespace-type name="back">
<include file-name="back/foo.h" location="global"/>
<object-type name="Foo">
<include file-name="back/foo.h" location="global"/>
</object-type>
</namespace-type>
</typesystem>

Обратите внимание, что я добавил строки, такие как:

<include file-name="gui/main.h" location="global"/>

а также

<extra-includes>

в начале.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]