Auto bind Python from CC++ ===================
Достаточно простой, удобный и настраиваемый проект для автоматического связывания C/C++ кода с Python и генерации whl пакета
Данный проект был клонирован из:https://github.com/Neutree/c_cpp_project_framework и часть, отвечающая за компиляцию, полностью совпадает с оригинальным репозиторием
Пример кода для автоматического биндинга с использованием pybind11:https://github.com/sipeed/MaixPy/tree/main/components/maix
Быстрый старт
- 1. Клонируйте этот репозиторий, перейдите в каталог /examples/demo
x86 соответствует компиляции на локальной машине, arm64 — для MaixCam2, RISCV64 — для MaiCam/Pro
- 2. Напишите функцию на C/C++, а также заголовочный файл hpp, имя файла whl должно совпадать с именем пакета для автоматического распознавания:
C++
namespace add::test
{
int add(int a, int b)
{
return a + b;
}
}
Для соответствующей функции добавьте @modul комментарий, далее укажите путь к функции:
C++
namespace add::test
{
/
- My function, add two integer.
- @param a arg a, int type
- @param b arg b, int type
- @return int type, will a + b
- @module add.test.add
*/
int add(int a, int b);
}
Первая строка содержит описание функции, @param — описание параметров, @return — описание возвращаемого значения (может быть пустым)
Если требуется только компиляция и упаковка в файл whl, main.cpp изменять не нужно
Используйте python project build для компиляции и упаковки файла whl
После установки файла whl можно напрямую вызывать:
Python
import add
add.test.add(1,1)
``
Внимание:
- Один заголовочный файл представляет одно имя модуля, указывающее импортируемый модуль, например, add.hpp соответствует import add, имя модуля должно начинаться с add
- Прямой запуск cpp_bind_python.py позволяет создать только привязанный cpp-файл, добавление параметра --doc DOC автоматически генерирует документацию из комментариев