Skip to content

Building and hacking

Pavel A edited this page May 18, 2016 · 5 revisions

Source

The source tree:

  • commandline - the command line utility and low-level USB HID layer
  • lib - the dynamic library
  • doc - documentation (see also docum files in other dirs)
  • windows-vs - Stuff specific for Windows:
    • Visual Studio solution files, projects specific to Windows.
    • Windows GUI demo program
  • test - test scripts for the library and examples

How to build

Linux

  • Build command: cd commandline/makemake && make

  • Requirements:

    • libusb-devel 0.x
    • Standard GCC & make tools package

We do not want to use 3rd party Linux HID libraries instead of libusb, because they are more complicated, and not always available.

Windows

Run Visual Studio; open the solution in windows-vs dir. Solution and project files are specific for each supported VS version. Select desired configuration(s) and hit the Build button.

  • Select oldest target OS version in properties of VC++ projects.
  • Use the WinXP compatibility option in 32-bit configuration if needed (and why not?). For 64-bit, Win7 is the oldest version. (Vista/2008 users, get updated!)
  • Select not to use runtime DLLs
  • UAC setting: not needed, run as standard user.

Supported VS versions:

  • VS 2015 Community edition Update 2, and its matching SDK (win10), VS 2015 Express for Desktop

  • VS 2013 Community edition Update 5, and its matching SDK (win8.1)

  • VS 2008, 2010 (or VC++ Express): needs also Windows Driver Kit (WDK) 7.1 or newer for Win7 (not Win8 or Win10!)

  • Optional: Python add-on (PTVS) - for working on Python test scripts

  • Windows with GCC/Mingw: not done.

OS X

  • Build command: cd commandline && xcodebuild
  • Requirements:
    • Xcode 6.1+ and IOKit framework
  • Supported versions: Yosemite and newer (what I've tested).

Producing a release

The make-release-xxxx scripts copy build products to a common "release" directory. Each make-release script is for one platform.

Files built on all platforms can then be combined in a single archive. Copying common files (docs, .h files, tests) duplicates in each script (yep, that's bad).

? Make separate downloads for each platform?

TO-DOs

  • Update to libusb 1.x ?
  • Windows: make native .NET library (for VB, Powershell... instead of pinvokes). (Consider this also on Linux with Xamarin?) HELP WANTED.
  • Use Cmake to produce makefiles and VC++ projects. HELP WANTED.
Clone this wiki locally