deploy: a47170346a
This commit is contained in:
1 parent
b36f8a9821
commit
11a863958e
1180 files changed
+14211
-6025
No files matched your search
+30
-16
@@ -4,21 +4,30 @@ There are several ways to add this header-only library to a C++ project. The fol
|
||||
|
||||
```
|
||||
flowchart TD
|
||||
A[Add the library to a C++ project] --> B{Already using CMake?}
|
||||
B -- no --> C{Using pkg-config or plain Makefiles?}
|
||||
C -- yes --> D[pkg-config]
|
||||
C -- no --> E[Copy the single header]
|
||||
B -- yes --> F{Library installed system-wide?}
|
||||
F -- yes --> G["find_package()"]
|
||||
F -- no --> H{Use a package manager?}
|
||||
H -- yes --> I[Package manager]
|
||||
H -- no --> J["add_subdirectory() or FetchContent"]
|
||||
A[Add the library to a C++ project] --> B{{Using CMake?}}
|
||||
B -- no --> C{{Package manager available?}}
|
||||
C -- yes --> D["<b>Use a package manager</b><br>see Package Managers"]
|
||||
C -- no --> E["<b>Copy the single header</b><br>see Header only"]
|
||||
B -- yes --> F{{Already installed?}}
|
||||
F -- yes --> G["<b>find_package</b><br>see CMake, External"]
|
||||
F -- no --> H{{CMake 3.14 or later?}}
|
||||
H -- yes --> I["<b>FetchContent</b><br>see CMake, FetchContent"]
|
||||
H -- no --> J["<b>add_subdirectory</b><br>see CMake, Embedded"]
|
||||
G --> T["<code>nlohmann_json::nlohmann_json</code>"]
|
||||
I --> T
|
||||
J --> T
|
||||
```
|
||||
|
||||
- **Copy the single header**, as described [below](#header-only) — no build-system integration required.
|
||||
- **CMake**: use [`find_package()`](https://json.nlohmann.me/integration/cmake/#external) if the library is already installed, [`add_subdirectory()`](https://json.nlohmann.me/integration/cmake/#embedded) to embed the source tree, or [`FetchContent`](https://json.nlohmann.me/integration/cmake/#fetchcontent) to download it at configure time; see [CMake](https://json.nlohmann.me/integration/cmake/index.md).
|
||||
- **Package managers**: install the library with a package manager such as Homebrew, Conan, or vcpkg; see [Package Managers](https://json.nlohmann.me/integration/package_managers/index.md).
|
||||
- **pkg-config**: if you use bare Makefiles instead of CMake, [pkg-config](https://json.nlohmann.me/integration/pkg-config/index.md) can supply the include flags for an already-installed library.
|
||||
Choosing an integration method: answer the questions in the hexagons from top to bottom to reach a method. All CMake methods end at the same target, `nlohmann_json::nlohmann_json`; the list below links to each method.
|
||||
|
||||
- **Single header**: copy [`json.hpp`](#header-only) into your project; no build-system integration required.
|
||||
- **CMake**, see [CMake](https://json.nlohmann.me/integration/cmake/index.md):
|
||||
- [`find_package()`](https://json.nlohmann.me/integration/cmake/#external) if the library is already installed;
|
||||
- [`FetchContent`](https://json.nlohmann.me/integration/cmake/#fetchcontent) to download it at configure time (CMake 3.14 or later);
|
||||
- [`add_subdirectory()`](https://json.nlohmann.me/integration/cmake/#embedded) to embed a vendored copy of the source tree;
|
||||
- or [support both](https://json.nlohmann.me/integration/cmake/#supporting-both) with an option that selects installed or vendored.
|
||||
- **Package managers**: install the library with Homebrew, Conan, vcpkg, or one of the many others; see [Package Managers](https://json.nlohmann.me/integration/package_managers/index.md) for the full list.
|
||||
- **pkg-config**: if you use bare Makefiles instead of CMake, [pkg-config](https://json.nlohmann.me/integration/pkg-config/index.md) supplies the include flags for an already-installed library.
|
||||
|
||||
Once the library is integrated, see the [Migration Guide](https://json.nlohmann.me/integration/migration_guide/index.md) for how to keep your code future-proof across releases.
|
||||
|
||||
@@ -56,8 +65,13 @@ For the read-only, non-owning [`basic_json_document`](https://json.nlohmann.me/a
|
||||
## See also
|
||||
|
||||
- [CMake](https://json.nlohmann.me/integration/cmake/index.md) - integrate the library into a CMake project
|
||||
- [Package managers](https://json.nlohmann.me/integration/package_managers/index.md)
|
||||
- [pkg-config](https://json.nlohmann.me/integration/pkg-config/index.md)
|
||||
- [Package managers](https://json.nlohmann.me/integration/package_managers/index.md) - install the library with a package manager
|
||||
- [pkg-config](https://json.nlohmann.me/integration/pkg-config/index.md) - generate include flags for plain Makefiles
|
||||
- [Compile times](https://json.nlohmann.me/integration/compile_times/index.md) - reduce the compile time overhead
|
||||
- [Migration guide](https://json.nlohmann.me/integration/migration_guide/index.md) - upgrade from an earlier version
|
||||
- [Releases](https://json.nlohmann.me/home/releases/index.md)
|
||||
- [Releases](https://json.nlohmann.me/home/releases/index.md) - release notes of all versions
|
||||
- [`basic_json`](https://json.nlohmann.me/api/basic_json/index.md) - the main class and all its member functions
|
||||
- [Macros](https://json.nlohmann.me/api/macros/index.md) - reference of all macros
|
||||
- [Supported Macros](https://json.nlohmann.me/features/macros/index.md) - configure the library with macros
|
||||
- [Modules](https://json.nlohmann.me/features/modules/index.md) - C++20 module support
|
||||
- [`NLOHMANN_JSON_VERSION_MAJOR`](https://json.nlohmann.me/api/macros/nlohmann_json_version_major/index.md) - library version macros
|
||||
Reference in new issue
Block a user