Acquiring Shift

Shift is accessible through a private github repository located at You may request access by contacting the authors. Once you have been granted access, you will need to add your ssh key to github following the instructions described here. Then clone the project recursively using the following command:

git clone --recursive

The recursive flag is necessary to initialize the submodules. If you cloned the repository without the recursive flag, you can initialize the submodules later by issuing the command:

git submodule update --init --recursive


In addition to the git submodules that are packaged together with Shift, the following additional libraries must be installed on your system.


On most Linux distributions the above packages can be installed using the distribution’s package manager.

Arch Linux:

pacman -S cmake assimp jansson qt5 graphviz cblas imagemagick pandoc

Ubuntu / Debian-based Linux Distributions:

apt-get install cmake assimp jansson qt5 graphviz cblas libmagickwand-dev pandoc


On a Macintosh, the dependencies can be installed using the brew package manager:

brew install cmake assimp jansson qt5 graphviz imagemagick pandoc

The cblas package is already available on a Macintosh using the accelerate framework, the CMakeLists.txt file may need to be modified to bring in this dependency correctly.


Shift has not been tested on Windows machines.

Building Shift

From within the top directory of the repository, issue the following commands:

mkdir build
cd build
cmake ..

Executables will be located in ${PROJECT_DIRECTORY}/build/bin

Where ${PROJECT_DIRECTORY} is the root directory of the git project on your system.

You can test if the executable works correctly by running the command line interface to the program as:

cd ${PROJECT_DIRECTORY}/build/bin
./shift-cli ../shift-models/excavator/excavator.json

Run the graphical user interface component of the program by executing the following command from within the ${PROJECT_DIRECTORY}/build/bin directory:


Building documentation

Documentation can be built by issuing the command in the build directory:

make doc

Optional - documentation can be copied to your /share/doc folder by issuing the command:

make install