The project uses CMake for managing dependencies, configurations and building. Currently v3.10 is required for this project. In addition, ninja build system is used for development.
- CMake v3.25.1
- Clang (Apple LLVM version 14.0.0 (clang-1400.0.29.202))
- Xcode v 14.2 (14C18)
- C++ (c++1z)
- Ninja
- Boost v1.81.0 has to be installed and make it visible for CMake
- boost::dynamic_bitset, as a header only class, is used to benchmarking bit storing
This project manages 3rd party dependencies via CMake ExternalProject.
- Go to the root folder of the project
- Prepare folders (build/debug, build/release and build/xcode) an generate project files (Ninja, Xcode)
Run
./configure.sh - Run
./build.shto build in debug mode
- Generate the project (with Ninja)
cmake -S . -B build/debug -DCMAKE_BUILD_TYPE=Debug -G Ninja - Build the project (all targets)
cmake --build build/debugor./build.sh - Binary files can be found under build/debug
- Generate the project (with Ninja)
cmake -S . -B build/release -DCMAKE_BUILD_TYPE=Release -G Ninja - Build the project (all targets)
cmake --build build/release - Binary files can be found under build/release
Of course CMake has various options for project generation that can be used under -G such as:
- Xcode
- Unix Makefiles
- Ninja
- etc.
Tools
- Generate the project (with Ninja)
cmake -S . -B build/debug -DCMAKE_BUILD_TYPE=Debug -G Ninja - Build the project (all targets)
cmake --build build/debugor./build.sh - Run unit tests with CTest
ctest
Tool: Google benchmark framework (master branch)
After the project is compiled successfully, the benchmarking app is under build/debug/compressor_benchmark folder where compressor_benchmark runs the predefined tests