Skip to content

How to Design a Language Agnostic SDK for Cross Platform Deployment and Maximum Extensibility: A Tutorial

Notifications You must be signed in to change notification settings

cyrusbehr/sdk_design

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stargazers Issues CircleCI LinkedIn


logo

SDK Design

How to Design a Language Agnostic SDK for Cross Platform Deployment and Maximum Extensibility
A Venice Computer Vision Presentation

Video Presentation · Presentation Slides · Blog Post · Venice Computer Vision

SDK Design

This project demonstrates how to build a language agnostic SDK for cross platform deployment and maximum extensibility. It covers how to do the following:

  • Build a basic face detection computer vision library in C++
  • Compile / cross compile the library for amd64, arm64, arm32
  • Package that library and its dependencies as a single static library
  • Add unit tests
  • Set up a CI pipeline
  • Write python bindings for our library
  • Generate documentation directly from our API

Please refer to the blog post for a detailed tutorial and explanation of all the components of this project.

alt text

Getting Started

The following instructions assume you are using Ubuntu 18.04

Prerequisites

  • sudo apt install build-essential
  • sudo apt-get install g++-aarch64-linux-gnu
  • sudo apt-get install gcc-arm-linux-gnueabihf binutils-arm-linux-gnueabihf g++-arm-linux-gnueabihf
  • sudo apt install python3.8
  • sudo apt install python3-pip
  • pip3 install cmake
  • sudo apt-get install doxygen
  • sudo apt-get install wget
  • sudo apt-get install zip

Install 3rd Party Libraries

Navigate to 3rdparty then run the following:

  • ./build_catch.sh
  • ./build_pybind11.sh
  • ./build_ncnn.sh
  • ./build_opencv.sh

Building the library

  • mkdir build && cd build
  • cmake ..
  • make -j$(nproc)
  • make install

The outputs will be copied to dist

Cross comping for arm32

  • mkdir build && cd build
  • cmake -D BUILD_ARM32=ON ..
  • make -j$(nproc)
  • make install

Cross compiling for arm64

  • mkdir build && cd build
  • cmake -D BUILD_ARM64=ON ..
  • make -j$(nproc)
  • make install

About

How to Design a Language Agnostic SDK for Cross Platform Deployment and Maximum Extensibility: A Tutorial

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages