Building from source (Mac/Linux)

Technical documentation
2013-11-12

Building the TouchKeys application from source requires the following three libraries:

1. Juce [http://www.juce.com]: cross-platform C++ libraries covering everything from low-level data structures to a complete GUI toolkit.

2. boost [http://boost.org]: C++ utility libraries. The required libraries are header-only (none of the compiled boost libraries are needed). Libraries used include boost::circular_buffer, boost::bind and boost::function.

3. liblo [http://liblo.sourceforge.net]: OSC library.

Standard compiler tools (Xcode on Mac, g++ on Linux) are also required.

Juce

Instructions for downloading Juce can be found here: http://www.juce.com/downloads

On Mac, no further setup is needed, but it can be helpful to build the Introjucer application, which creates and edits Juce projects and produces the project for Xcode. An Xcode project for Introjucer can be found in juce/extras/Introjucer/Builds/MacOSX.

On Linux, Juce depends on several libraries. This thread contains more information on installing the dependencies on Linux. As on Mac, it can be useful to build the Introjucer application, which is found in juce/extras/Introjucer/Builds/Linux.

Projects for Mac and Linux (Xcode and Makefile, respectively) are already created in the TouchKeys directory (touchkeys/Builds). There is also a Linux32 target (touchkeys/Builds/Linux32) used for cross-compiling a 32-bit Linux binary on a 64-bit system; this is not needed to compile for the native architecture of the machine.

Windows support is not yet added in this release, but will take the form on a Visual Studio project within the touchkeys/Builds directory.

The existing project files assume TouchKeys and Juce are located in the same directory. To change the path to Juce, open the TouchKeys.jucer file in the Introjucer.

boost

Download the latest boost release from http://boost.org. Further instructions on installing boost can be found here: http://www.boost.org/doc/libs/1_55_0/more/getting_started/unix-variants.html

Note that all boost libraries used by TouchKeys are header-only, so it is not necessary to compile the binary libraries. However, the boost header files must be located somewhere in the include search path (e.g. in /usr/local/include).

liblo

TouchKeys has been built with liblo 0.26, which can be downloaded from http://liblo.sourceforge.net.

Binary releases of the TouchKeys software link liblo statically, so the program can be run on machines without liblo installed. The Xcode project and Linux Makefile are therefore configured to look for a static library at /usr/local/lib/liblo.a. (This can be changed in the Introjucer.) To build a static library, go to the liblo directory and run the following:

./configure --enable-static

make

sudo make install

Note: on Mac, if you want to build a universal binary (32/64-bit), you need to create a universal version of liblo. Use the following arguments to configure to produce a universal build (original source):

./configure CFLAGS="-arch i386 -arch x86_64" CXXFLAGS="-arch i386 -arch x86_64" LDFLAGS="-arch i386 -arch x86_64" \
  --disable-dependency-tracking --enable-static

Building TouchKeys

Once the dependencies are installed, the TouchKeys application can be compiled.

On Mac: open touchkeys/Builds/MacOSX/TouchKeys.xcodeproj

On Linux: in the touchkeys/Builds/Linux directory, type make.

Downloads