Features • Installation • License • Documentation
Clarabel.cpp is a C/C++ wrapper of Clarabel.rs.
Note: The C++ interface is WIP and there might be breaking changes in future releases.
Clarabel.cpp uses CMake to generate the build system and requires the following dependencies:
- Rust
- Clarabel.rs (included as a submodule)
- A compiler that supports C11 and C++11
- Eigen (optional for the C++ interface)
You may install Eigen via the system package manager on Unix-like systems or vcpkg on Windows.
- Follow the vcpkg instructions to compile vcpkg and add
vcpkg.exetoPATH.
Ubuntu:
sudo apt install libeigen3-devWindows:
vcpkg install eigen3:x64-windows- For 32-bit platforms, use
eigen3:x86-windowsinstead ofeigen3:x64-windows.
git clone --recurse-submodules https://github.com/oxfordcontrol/Clarabel.cpp.git
cd Clarabel.cppmkdir build
cd build
cmake ..
cmake --build .You may specify a particular build system using the -G flag for cmake (e.g. -G "Unix Makefiles").
If you are using vcpkg on Windows, you may find the vcpkg toolchain file using:
vcpkg integrate installand then specify the vcpkg toolchain file path and target triplet to generate the build system using:
cmake .. -DCMAKE_TOOLCHAIN_FILE=VCPKG_TOOLCHAIN_PATH -DVCPKG_TARGET_TRIPLET=x64-windowswhere VCPKG_TOOLCHAIN_PATH is the path to the vcpkg toolchain file.
- For 32-bit platforms, use
x86-windowsinstead ofx64-windows.
To enable SDP features, set the CLARABEL_FEATURE_SDP option to one of the following values:
sdp-acceleratesdp-netlibsdp-openblassdp-mklsdp-r
By default, CLARABEL_FEATURE_SDP is none and SDP support is disabled.
By default, unit tests are disabled to reduce build time. To enable unit tests, set the CLARABEL_BUILD_TESTS option to 'true'.
Examples for both C and C++ are available in examples/c and examples/cpp and can be run from the build directory using:
./examples/c/C_EXAMPLE
./examples/cpp/CPP_EXAMPLE- Link to the
libclarabel_c_shared(shared library) orlibclarabel_c_static(static library) target in CMake. #include <Clarabel>in your C/C++ source files.
This project is licensed under the Apache License 2.0 - see the LICENSE.md file for details.