В продолжение этой темы.
Вообщем, потихонечку финализирую и готовлю к публикации свой pet-project. Но возник вопрос какую выбрать приличную сборочную систему, т.к. сейчас я использую абсолютно непортабельный Makefile с кучей костылей — и выносить такое на публику не хочу.
Собственно subj. Проект — библиотека для python, написанная на c++ с использованием pybind11.
Фактически, библиотека состоит из двух частей, которые шарят между собой некоторые хедеры:
- frontend взаимодействующий с python-кодом, содержащий биндинги для всех классов и функций;
- backend (которых, в перспективе будет несколько, но пока один) — динамически загружаемая библиотека, содержащая сами расчётные функции.
Подводные камни, с которыми не понимаю как правильно быть:
- зависимости (которые я сейчас просто скриптм сгружаю с гибхаба и кладу в отдельную директорию и симлинкаю в директории с исходниками):
- на этапе сборки backend скриптом из python делается немного кодогенерации что бы проинстанцировать все комбинации шаблонных параметров.
- разнцые опции компилятора при сборке front- и backend, в дальнейшем и разные компиляторы (т.к. буду использовать hip и cuda)
- как-то хочется что бы оно минимально зависело от версии интерпретатора и избегать подобного:(upd: избежать не получится)
ImportError: Python version mismatch: module was compiled for Python 3.10, but the interpreter version is incompatible: 3.11.4 (main, Jul 5 2023, 14:15:25) [GCC 11.2.0].
Соответственно, хочется что бы всё это это собиралось как-то максимально безболезненно, желательно прямо в python-пакет, который можно будет впоследствии установить pip-ом. Вероятно, мне нужна какая-то python-центричная сборочная система.
Так-как сам я не программист, то спрашиваю советов и best-practice для моего случая.