• Stars
    star
    147
  • Rank 251,347 (Top 5 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created over 10 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A C++ Inversion of Control Framework

Purpose

Autowiring is an inversion-of-control framework for C++11. It provides a declarative way to manage resources through dependency injection. Instead of explicitly instantiating dependencies, simply declare what you need and Autowiring will manage object creation and wiring.

Build Build Status

Autowiring project structure is specified with CMake. Simply point CMake to the root project directory and generate your desired project file. The C++11/ directory provides boost shims for platforms that have incomplete C++11 support.

Mac

Mac dependencies are installed with port or brew. If you have port installed, this will build the project:

git clone [email protected]:leapmotion/autowiring.git
cd autowiring
sudo port install cmake
cmake .
make
make test
sudo make install

This will configure the project to build fat binaries by default. If you wish to build only 64-bit binaries, use the following CMake command instead:

cmake . -DCMAKE_OSX_ARCHITECTURES:STRING=x86_64

Linux

The commands for Unix are different depending on what package manager you're using. Ubuntu's package manager is apt-get, OpenSUSE uses zypper, and CentOS systems use yum. The major apparent difference to the user will be that the package to install has a different name. For Ubuntu, do this:

git clone [email protected]:leapmotion/autowiring.git
cd autowiring
sudo apt-get install cmake
cmake .
make
make test
sudo make install

If you want to build for 32-bit Linux, run the following CMake command instead:

cmake . -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_C_FLAGS=-m32

Windows

Unfortunately, Windows doesn't have any sort of nifty package manager, and this requires that you download and install cmake yourself. Once that's done, Here's the magic incantation required, assuming you're running from a MinGW terminal (comes for free with Git Extensions. You're also going to need a copy of Visual Studio 2012 or better. Other build systems will probably work, but they aren't officially supported here.

git clone [email protected]:leapmotion/autowiring.git
cd autowiring
cmake .

At this point, you'll have a solution file in your root directory called "Autowiring.sln", if you run Visual Studio as an administrator and build the INSTALL target then Autowiring will be installed on your system. As with the other platforms, CMake will be able to find autowiring when it's installed this way via the find_package command. Alternatively, if you prefer to build from the command line:

cmake --build . --config Release

Arm-linux

Building on ARM-Linux requires the use of a toolchain file. This file is included with Autowiring. To configure, use the following invocation:

cmake . -DCMAKE_TOOLCHAIN_FILE=standard/toolchain-arm32.cmake -DCMAKE_PREFIX_PATH:PATH=/your/lib/path

For 64-bit ARMv8 (AArch64), use toolchain-arm64.cmake

Android

Similar requirements to Arm-linux, you must specify a toolchain file. You must also specify the path to your Android toolchain directory. Make sure you update /opt/android-standalone-toolchain to point to your actual Android standalone toolchain directory. To build for 64 bit android systems, export the environment variable export ARMv8=true. If you aren't cross-compiling, then simply run cmake with no options.

cmake . -DCMAKE_TOOLCHAIN_FILE=standard/toolchain-android.cmake -DLLVM_ANDROID_TOOLCHAIN_DIR=/opt/android-standalone-toolchain

Test

To run all Autowiring unit tests as a sanity check:

bin/AutowiringTest

If running through valgrind, make sure to specify fair thread scheduling or else some pathological test cases may hang:

valgrind --fair-sched=yes bin/AutowiringTest

Install

Autowiring uses CPack, which knows how to use rpm/deb/wix/dragndrop, and will target the correct version depending on which system you're on. To build the installer on Windows, you must first download the wix toolset. Other CMake installations on the current system will be able to find Autowiring once the package is installed by this means.

Generally speaking, there is not really much reason to build an installer yourself unless you're testing out the bleeding edge. The releases page lists the officially supported Autowiring releases.

ZenHub Badge

More Repositories

1

leapjs

JavaScript client for the Leap Motion Controller
JavaScript
1,980
star
2

ProjectNorthStar

The open-source files comprising Leap Motion's Project North Star AR Headset.
C
1,616
star
3

LeapMotionCoreAssets

Unity Assets for Leap Motion v2 Skeletal Tracking
C#
164
star
4

javascript

Leap Motion Javascript / LeapJS Examples
JavaScript
113
star
5

leapjs-plugins

A collection of plugins available to be used with LeapJS.
JavaScript
112
star
6

leapuvc

Examples in Python, Matlab, and C for interpreting data from UVC-Enabled Leap Motion Peripherals
Python
96
star
7

leapjs-rigged-hand

Control hand models with the Leap Motion
CoffeeScript
93
star
8

LeapUnrealModules

Leap Motion Unreal modules and example content.
C#
62
star
9

Leap-Three-Camera-Controls

Camera Controls for Three.js using Leap Motion
JavaScript
61
star
10

InteractionEngine101

"What does the Interaction Engine do?"
C#
59
star
11

VRIntro

Leap Motion's intro to VR
C++
56
star
12

AppExperiments

Experimental applications and home of AppModules, a wide-ranging app toolkit.
C#
51
star
13

leapjs-widgets

LeapJS 3D Buttons, scrolling, and more
JavaScript
51
star
14

leapjs-playback

Record and play back Leap Motion frame data
JavaScript
48
star
15

Button-Builder

Build Buttons!
C#
38
star
16

leapjs-network

Use WebRTC to send LeapMotion data p2p
JavaScript
36
star
17

Paint

Leap-enabled 3D VR Painting.
C#
31
star
18

MagneticMesh

A Leap Motion Cinder interactive music visualizer. Pinch to create gravitational fields.
C++
25
star
19

VRCollage

Experiment w/ Leap Motion and Virtual Reality
JavaScript
18
star
20

leapserial

The Leap Motion cross-format, cross-platform declarative serialization library
C++
17
star
21

Particles

Leap Motion experimental application: Particles!
C#
16
star
22

handmodels

15
star
23

ar-screen

Hackathon project for augmented reality screen
C++
15
star
24

touchless

Touchless Control for your PC, from Leap Motion V1
C++
15
star
25

LeapIPC

Leap Motion interprocess communications framework
C++
14
star
26

mt-windows

A MultiTouch driver for touch injection on Windows 7
C
12
star
27

cmake-modules

Helpful CMake modules - 3.0+
CMake
11
star
28

chrome-draw

JavaScript
10
star
29

sculpting

Beauty in design (formerly known as Freeform)
C++
10
star
30

Leap-TiltFive-Testing

Unity test scenes of hand tracking interactions with Tiltfive AR glasses
C#
10
star
31

QuickSwitch

QuickSwitch, VR to Passthrough
10
star
32

LeapShape

Browser BRep CAD in WebXR
JavaScript
9
star
33

tensorheaven

C++
9
star
34

PlasmaBall

Manipulate the Plasma Ball with ghostly hands
7
star
35

Galaxies

C#
7
star
36

DShowBaseClasses

Microsoft DirectShow base classes wrapped in CMake
C++
7
star
37

ArmHUD

ArmHUD Alpha
6
star
38

os-controls

Shortcuts, with libraries for GPU-accelerated overlays and more
C++
6
star
39

beer-pong

JavaScript
4
star
40

CityVisualizerVR

Fly around and interact with the city in VR
4
star
41

FlockingVR

Flocking fish demo in VR
4
star
42

libjpeg-turbo

git-svn mirror of sourceforge's libjpeg-turbo svn repository
C
4
star
43

FragmentalVR

A HMD version of the Fragmental 3D app
4
star
44

homebrew-leapmotion

Collection of homebrew formulas for Leap Motion libraries
Ruby
4
star
45

MirrorTest

Move squares on top of a mirror interface
C
4
star
46

Playground

Leap Motion V2 Introduction app and play zone!
C#
4
star
47

Leap3DObjectBrowser

Pull yourself through space by grabbing.
C
4
star
48

IconExtractor

A simple project for extracting the main icon from a Windows PE
C++
4
star
49

leap-excel

Leap Motion plugin for Excel
C#
3
star
50

RobotsVR

Put together dancing robots!
3
star
51

rawviewer

RawViewer for Leap Motion Controllers
C
3
star
52

LeapC-samples

The LeapSDK LeapC samples configured to build under Visual Studio 2017
C
3
star
53

ColliderVR

Straight-up cruisin' through the supercollider with Leap Motion and VR
3
star
54

Leap-Motion-Player

JavaScript
3
star
55

PlasmaBallVR

Plasma Ball for VR Head Mounted Display and Leap Motion Controller
3
star
56

LeapIntoOculus

A basic example of using the Leap Motion Controller with the Oculus Rift in C++
C
3
star
57

pipeman

A high-performance pipe manager for capturing images from Unity3D
C++
3
star
58

jenkins-build-per-branch

Groovy
2
star
59

dragon410c

kernel source of dragon410c for LeapMotion
C
2
star
60

DeskVR

Leap Desk VR
2
star
61

DualCameraAPI1

Simple DualCamera Preview App
Java
2
star
62

cpp

C++
2
star
63

RiggedHandVisualizer

GLSL
2
star
64

FreeImage

Modifications to build FreeImage for the Leap Motion environment
C
2
star
65

standard

A library containing the skeleton set for all new external library projects
CMake
2
star
66

BattleshipVR

BattleshipVR
2
star
67

pyopticam

A nanobind wrapper for NaturalPoint's Optitrack Camera SDK
C++
2
star
68

leapmusic

Java
2
star
69

orientation

Leap Motion's V1 Orientation
C++
2
star
70

FurnitureDestructionDemo

2
star
71

AppSwitcher

A very simple XML configurable application switcher utility
C#
2
star
72

WrenAR-VR-UI

WrenAR VR/UI
2
star
73

ImageAPIinObjectiveC

Demonstrates how to use the Image API in Objective-C projects
Objective-C
2
star
74

GrayImageViewer

This is a tool to view 8bit gray images
C++
2
star
75

Flocking

Flocking VR
CMake
1
star
76

punch-out

Boxing game demo from the April 2014 Leap Motion V2 hackathon
Python
1
star
77

apphome

Leap Motion App Home
JavaScript
1
star
78

VRHelloWorld

C
1
star
79

leap-facebook-chat

JavaScript
1
star
80

ShieldVR

Shield VR Example Project
1
star
81

usbbldr

USB descriptor builder repository
C++
1
star
82

mipivideo

A low level MIPI video transport API consumed by LeapSvc!
C++
1
star
83

hudson-tray-tracker

C#
1
star
84

leapCopter

JavaScript
1
star
85

FoxBlox

MATLAB
1
star
86

LeapHTTP

The libraries used by Leap Motion to perform certain HTTP operations
C++
1
star
87

hackathon-leap-signature

CSS
1
star
88

LaserVR

LaserVR Example
1
star
89

talks

Talks Given
JavaScript
1
star
90

VRQuickSwitch

The Leap Motion VR/AR Quick Switcher Experiment
1
star
91

leapshell

3D File system, "Utility" category winner from the April 2014 Leap Motion V2 hackathon
C++
1
star
92

anttweakbar

Leap Motion's modifications of anttweakbar repo
C++
1
star
93

OSCTutorialSite

OSCTutorialSite
CSS
1
star