Условно добавить модули с Boost Python - PullRequest
0 голосов
/ 11 мая 2018

Я успешно использую Boost Python для создания серии библиотек Python. Эти библиотеки создаются условно, в зависимости от настроек, которые пользователь указывает во время сборки (через CMake).

Теперь я хотел бы объединить их все в одну библиотеку, которая содержала бы серию модулей (по одному на старую библиотеку), только если бы они были необходимы.

Так, например, если раньше у меня было:

A.so # Always built
B.so # Compiled if B was set
C.so # Compiled if C was set

Теперь я хотел бы иметь:

MyLib.so # Always built

---

import MyLib

MyLib.A # always works
MyLib.B # works only if MyLib was compiled with B set
MyLib.C # works only if MyLib was compiled with C set

Я уже знаю, как создавать пространства имен с помощью Boost Python (через class_), но я не уверен, как можно настроить проект так, чтобы этот конечный результат был возможен.

С помощью CMake я могу условно добавлять файлы для компиляции, но я не знаю, как определить модуль MyLib в C ++, чтобы я мог добавлять к нему части в отдельных файлах.

1 Ответ

0 голосов
/ 11 мая 2018

Пока что я добавил ifdefs в функции экспорта, которые ограничивают экспорт на основе определений, созданных в CMake.

Это неплохо, хотя я бы предпочел сохранить код в чистоте от этого, но пока это мое единственное решение.

...