Installation
============
**nanoroute** requires Python 3.13 or newer. Pre-compiled wheels are available
for:
* Windows (x86_64)
* MacOS 13.3+ (arm64)
* manylinux_2_39 (x86_64)
On the supported platforms installing **nanoroute** is as simple as invoking
your favorite Python package manager, for example with ``pip``::
$ python -m pip install nanoroute
Building From Source
--------------------
**nanoroute** is built using
`py-build-cmake `_, a PEP 517
compliant build backend for building CMake-based Python extensions. At a
minimum building from source requires the following:
* A C++23 supporting compiler
* CPython 3.13+
* CMake 3.25+
* A suitable build system for CMake
Given these, **nanoroute** can be built with any PEP 517 compliant build
frontend. For example, using `build `_::
$ git clone https://github.com/nickelpro/nanoroute.git
$ python -m build nanoroute
Configuration
^^^^^^^^^^^^^
Local overrides for **nanoroute** configuration can be passed using
``py-build-cmake.local.toml`` or via command line overrides like so::
python -m build nanoroute -C--local=overrides.toml
See the
`py-build-cmake documentation `_
for a more complete discussion of using overrides.
**nanoroute** mostly uses native CMake variables, so to override the C++
compiler it would appropriate to modify ``CMAKE_CXX_COMPILER``, or to control
the MSVC runtime modify ``CMAKE_MSVC_RUNTIME_LIBRARY``, etc. **nanoroute** has
two additional options worth noting:
* ``NANOROUTE_USE_IPO``: Use interprocedural optimization if supported
(**Default:** On)
* ``NANOROUTE_STRIP``: Run system strip on the compiled module (**Default:** On)