# Installation

> USearch for C

```sh
cmake -B build_release -D CMAKE_BUILD_TYPE=Release -D USEARCH_BUILD_SHARED=1 -D USEARCH_DENSE_DTYPES=11 && cmake --build build_release --config Release
```

That leaves both libraries in `build_release/`, carrying all eleven dense storage types; precompiled ones ship on the [releases page](https://github.com/unum-cloud/USearch/releases).
Put `c/` on the include path, or `include/` once installed, where the C headers sit beside the C++ ones, and link either library.
One header, `usearch/usearch.h`, pulls in every modality: `dense_index.h`, `sequence_index.h`, `shapes_index.h` and `geospatial_index.h`.
`ctest --test-dir build_release -R usearch_test_c` runs the smoke test in `c/test.c`.

`-D USEARCH_INSTALL=1` adds the CMake package and a `.pc` file, and `cpack` then archives the preview SDK.
It holds the stripped shared library, the C headers, the C++ wrappers in `cpp/usearch/`, the package, the `.pc` and the license, but neither the archive nor the header-only core.

```sh
cmake -B build_release -D CMAKE_BUILD_TYPE=Release -D USEARCH_BUILD_SHARED=1 -D USEARCH_INSTALL=1 -D USEARCH_DENSE_DTYPES=11
cmake --build build_release --config Release
cpack --config build_release/CPackConfig.cmake # usearch-<version>-<platform>-sdk.tar.gz, a ZIP on Windows
```

Consumers link it as `usearch::shared` after `find_package(usearch)`, or through `pkg-config --cflags --libs usearch`.
`cmake --install build_release --component static` adds `usearch::static`, and `--component core` the header-only templates as `usearch::header`.

`-D USEARCH_BUILD_STUB=1` adds a brute-force stand-in under the same library names in `build_release/stub/`.
It answers every verb of every modality by exhaustive scan with the C++ standard library alone, so a binding links and runs its suite in seconds without building the engine.
Its search is exact, its traversal statistics are invented, and its checkpoints are its own memory image, readable by nothing else.

