Setup¶
STARK is written in C++ and comes with optional Python bindings (pystark).
STARK bundles its main third-party dependencies, which includes SymX, Eigen, fmt, TriangleMeshCollisionDetection, vtkio, par_shapes, and tinyobjloader.
For SymX-specific build options such as compiler selection, code-generation folders, and Hessian storage precision, see the SymX setup page.
Requirements¶
Requirement |
Notes |
|---|---|
CMake |
3.18 or newer |
C++ compiler |
C++20-capable compiler |
OpenMP |
Required by the STARK C++ library |
Python |
Optional; Python 3.8+ with development-module support for |
NumPy |
Optional; required when using |
Project structure¶
Folder |
Contents |
|---|---|
|
Core C++ library |
|
C++ example scenes |
|
C++ unit tests |
|
Python package and nanobind bindings |
|
Documentation source |
Building the C++ library and examples¶
From the repository root:
cmake -S . -B build
cmake --build build --parallel
The examples are built by default:
./build/examples/examples
STARK defaults to a Release build when no build type is specified. To choose explicitly:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
Optional tests¶
Tests are disabled by default. Enable them at configure time:
cmake -S . -B build -DSTARK_BUILD_TESTS=ON
cmake --build build --parallel --target stark_tests
./build/tests/stark_tests
Optional Python bindings¶
The Python bindings are disabled by default. Enable them with:
cmake -S . -B build -DSTARK_BUILD_PYTHON_BINDINGS=ON
cmake --build build --parallel --target pystark
When using Conda, Miniforge, virtualenv, or multiple Python installations, explicitly select the Python executable:
cmake -S . -B build \
-DSTARK_BUILD_PYTHON_BINDINGS=ON \
-DSTARK_PYTHON_EXECUTABLE=$HOME/miniforge3/envs/ENVNAME/bin/python
cmake --build build --parallel --target pystark
pystark uses nanobind, which is fetched automatically by CMake.
The compiled extension module is written directly into the source-tree Python package:
pystark/pystark/
To import it from the source tree, add the package folder to PYTHONPATH:
export PYTHONPATH=/path/to/stark/pystark:$PYTHONPATH
You can also add the path to the built pystark manually from python by
import sys
sys.path.append("path/to/stark/pystark")
Then verify:
import pystark
CMake options¶
Option |
Default |
Description |
|---|---|---|
|
|
Build the C++ test executable |
|
|
Build the C++ examples |
|
|
Build the |
|
unset |
Explicit Python executable used when building |
|
AUTO |
Use AVX2 instructions. AUTO tries to infer local support |
STARK also forwards or inherits relevant SymX options, including SIMD/JIT/compiler-related settings. For those, use the SymX setup page as the reference.