Sane C++ libraries are source libraries: add the code you need to your program and compile it with the rest of your sources. You do not install a prebuilt runtime or adopt a mandatory build system.
There is no mandatory package manager or project layout. Choose an integration size that matches the amount of Sane C++ your program uses, and change it later if the program grows.
Download the released SaneCpp<Library>.h file when you need one self-contained library and do not want a repository checkout. The download link on each library page is the shortest route from an existing program to a Sane C++ API.
Add SC.cpp to your target and add Includes/ to its header search paths. SC.cpp selects the platform implementation and compiles the repository libraries as one translation unit. This is the simplest complete integration and the best default when several libraries work together.
Compile selected files under Libraries/ separately when your build needs per-library targets, incremental compilation, or precise ownership of source groups. Keep using the public headers from Includes/; files under Internal/ and Tests/ are implementation details rather than public API.
These forms contain the same library code. They change how the code enters your build, not the APIs your application uses.
SC.cpp to the target's source files.Includes directory to the target's include paths.For example:
The library catalog identifies each library's dependencies and standalone download. The Platforms guide describes supported operating systems.
Normal projects may include C and C++ standard headers. Sane C++ library code still avoids STL containers, exceptions, RTTI, and hidden allocation, but your application is free to use them.
The APIs are designed to accept views and caller-provided storage, so application containers can interoperate without becoming library dependencies. For example, an application can expose writable storage from its own string type to a file read or formatter.
Strict no-standard-library compilation is an optional pressure mode, not the default integration path. The [FAQ](FAQ) explains the compile and link settings when you intentionally need it.
The unity build selects platform implementations at compile time. Depending on the libraries used, a target may need:
dl and pthread;#pragma comment(lib, ...).Start from the link settings used by the corresponding repository example or test rather than adding every possible system library. This keeps a small consumer target honest about what it actually uses.
When using Plugin without SC::Build, define SC_EXPORT_LIBRARY_<LIBRARY>=1 in the host for each Sane C++ library that a plugin must resolve. Linux hosts also need exported executable symbols, normally through -rdynamic.
Your existing build system remains a valid choice. Use SC::Build when its C++ build descriptions, native backend, cross-target profiles, or package-managed toolchains remove work from your project. The external-use guide shows a minimal adoption that does not copy the Sane C++ repository layout.
For a single self-contained library, download the released header from the relevant library page.