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.คลoning repository นี้, เข้าไปที่ไดเรกทอรี /examples/demo
โดยที่ x86 คือคอมไพล์บนเครื่องปัจจุบัน, arm64 คือคอมไพล์สำหรับ MaixCam2, และ RISCV64 คือคอมไพล์สำหรับ MaiCam/Pro
- 2.เขียนฟังก์ชัน C/C++ และไฟล์ hpp header โดยต้องตั้งชื่อไฟล์ให้เหมือนกับชื่อแพ็ก 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)
``
ข้อควรระวัง:
- ไฟล์หัวข้อหนึ่งแทนชื่อโมดูลหนึ่ง, หมายถึงโมดูลที่ต้อง import เช่น add.hpp ตรงกับ import add, โดยชื่อโมดูลต้องขึ้นต้นด้วย add
- รัน cpp_bind_python.py โดยตรงจะสร้างเฉพาะไฟล์ cpp ที่ผูกไว้แล้ว, เพิ่ม --doc DOC เพื่อสร้างเอกสารอัตโนมัติจากคอมเมนต์