Reviewed-on: https://git.shs.tools/SHS/shstk/pulls/158
Main SHS Toolkit repo
Introduction
SHS Toolkit is metaproject, that contains references to CMake, PIP, QAD, CD and QGLEngine.
- CMake - many CMake helpers and wrappers
- PIP - Platform-Independent Primitives, C++ libraries to solve many common tasks
- QAD - Qt for Advanced Developers, many Qt-based widgets and helpers. Also provide Qt-Designer plugins.
- CD - Control/Debug toolkit, PIP-based client-server library to simplify using coefficients and track some variables tasks. Also provide QAD-based pult.
- QGLEngine - modern Qt/OpenGL-based 3D engine with PBR materials. Also provide GUI widgets to edit scene and "libassimp"-based files importer.
Each project provide Find*.cmake file with correct dependecies. So, if you call find_package(CD)
then PIP and QAD will be found.
Each of there projects can be built separately, but this project help you to build all at once.
After successfully install, you can use next CMake imported targets:
- PIP:
- PIP - main library
- PIP::USB - PIUSB (libusb)
- PIP::Console - PIScreen
- PIP::Crypt - Cryptography (libsodium)
- PIP::Compress - Compression (zlib)
- PIP::FFTW - FFT with libfftw3
- PIP::OpenCL - PIP OpenCL bindings
- PIP::IOUtils
- PIP::Cloud - PIP cloud IODevices
- PIP::Lua - PIP Lua bindings
- QAD:
- QAD::Utils
- QAD::Widgets - collection of extendent widgets
- QAD::Application
- QAD::Blockview
- QAD::Graphic - widget for realtime visualization and publication quality 1D/2D plots
- QAD::SQLTable - widget for display and edit data based on SQL tables with relations
- QAD::TouchWidgets - collection of widgets for touch screen interface
- QAD::Doc - markdown helper for qt
- QAD::PIQt - helpers to convert PIP <-> Qt types
- QAD::PIQtUtils - Gui libraries and executables to edit PIConnection configs and watch PIIntrospection
- QGLEngine:
- QGLEngine::Core - 3d engine
- QGLEngine::Widgets - qt widgets for manage 3d obects and materials
- CD:
- CD::Core - PIP-based client/server library for read, transmit and use custom structures of coefficients
- CD::Qt - Qt bindings to CDUtils and "CD Pult" executable - full-featured CD client
qglview - old Qt-base OpenGL engine, has no imported target, so you should link with "qglview4" or "qglview5"
Compile
This repo can be compiled with GCC/MinGW/Clang, for Qt 4/5.
If there is no Qt found, builds only PIP and CD.
CMake options:
- LOCAL - if 0 then install to system directories: MinGW on Windows, /usr/local on Linux/MacOS, ${ANDROID_SYSTEM_LIBRARY_PATH} on Android. If 1 then install to ${CMAKE_INSTALL_PREFIX}. Disabled by default
- UTILS - build or not executable utilites, enabled by default
- DESIGNER_PLUGINS - build or not Qt Designer plugins, enabled by default
- QGLVIEW - build or not QGLView, disabled by default
- QGLENGINE - build or not QGLEngine, disabled by default
Windows scripts
Build steps:
- Unzip mingw.7z to C:\mingw
- Unzip qt.7z to C:\qt
- Download and install cmake from https://cmake.org/download/
- Prepare environment for x86 or amd64 architecture:
- set prefix for mingw e.g.: for C:\mingw\8_1_x32\ or C:\mingw\8_1_x64
set SDK_MINGW_DIR=C:\mingw\8_1_x - set prefix for Qt5 e.g.: for C:\qt\qt5150_win32\ or C:\qt\qt5150_win64
set SDK_QT5_DIR=C:\qt\qt5150_win - set path to cmake directory set SDK_CMAKE_DIR=C:\cmake or C:\Program Files\CMake
- set prefix for mingw e.g.: for C:\mingw\8_1_x32\ or C:\mingw\8_1_x64
- Run
make_shstk32.batormake_shstk64.bat
Build steps for both architectures: follow previous steps, but on '5' state run make_shstk_all.bat
Non-Windows scripts
Script "make_shstk.sh" compile and install toolkit for current environment, e.g. ./make_shstk.sh -j4
Docker
This repo provide several Dockerfiles, so you can exec docker build -t windows-shstk docker\windows-shstk
and make docker image "windows-shstk" with installed SHS Toolkit for Windows. Similar for other platforms.
Dockerfile provides for next platforms:
- Debian 10 (debian-shstk)
- Debian 11 (debian11-shstk)
- Ubuntu 20.04 (ubuntu-shstk)
- Windows x32 (windows32-shstk)
- Windows x64 (windows-shstk)
- MacOS (osx-shstk)
- Raspberry Pi Raspbian (pi-shstk)
- Android ndk 21 armeabi-v71, arm64-v8a, x86, x86_64 (android-shstk)