Simplify cmake documentation

Signed-off-by: Cristian Le <git@lecris.dev>
This commit is contained in:
Cristian Le 2023-07-09 22:40:09 +02:00
parent 57a4172ee8
commit f5d730fb66
Failed to extract signature
3 changed files with 48 additions and 78 deletions

107
README.md
View File

@ -13,92 +13,47 @@ Niels Lohmann et al develop a great JSON parser for C++ called [JSON for Modern
C++](https://github.com/nlohmann/json). This validator is based on this
library, hence the name.
## Building
## Getting started
This library is based on Niels Lohmann's JSON-library and thus has
a build-dependency to it.
Currently, this package only offers a C++ library interface, and is only
available via cmake's `FetchContent` and conan. It is highly recommended
to use cmake to link to this library
Currently at least version **3.6.0** of NLohmann's JSON library
is required.
Dependencies:
Various methods using CMake can be used to build this project.
- NLohmann's Json library: At least **3.6.0**
(See Github actions for officially tested versions)
### Build out-of-source
### CMake configuration
Do not run cmake inside the source-dir. Rather create a dedicated build-dir:
<!-- SHINX-CMAKE-START -->
```Bash
git clone https://github.com/pboettch/json-schema-validator.git
cd json-schema-validator
mkdir build
cd build
cmake [..]
make
make install # if needed
ctest # run unit, non-regression and test-suite tests
Bellow is a minimum cmake configuration file using `FetchContent`:
```cmake
cmake_minimum_required(VERSION 3.11)
project(example)
include(FetchContent)
FetchContent_Declare(nlohmann_json_schema_validator
GIT_REPOSITORY pboettch/json-schema-validator
# Please use a specific version tag
GIT_TAG main
)
FetchContent_MakeAvailable(nlohmann_json_schema_validator)
add_executable(example main.cpp)
target_link_libraries(example PRIVATE nlohmann_json_schema_validator::validator)
```
### Building as shared library
<!-- SHINX-CMAKE-END -->
By default a static library is built. Shared libraries can be generated by using
the `BUILD_SHARED_LIBS`-cmake variable:
For more details about the available cmake options and recommended configurations
see [docs/cmake](docs/cmake/index.md)
In your initial call to cmake simply add:
```bash
cmake [..] -DBUILD_SHARED_LIBS=ON [..]
```
### nlohmann-json integration
As nlohmann-json is a dependency, this library tries find it.
The cmake-configuration first checks if nlohmann-json is available as a cmake-target. This may be the case, because it is used as a submodule in a super-project which already provides and uses nlohmann-json.
Otherwise, it calls `find_package` for nlohmann-json and requires nlohmann-json to be installed on the system.
#### Building with Hunter package manager
To enable access to nlohmann json library, Hunter can be used. Just run with `JSON_VALIDATOR_HUNTER=ON` option. No further dependencies needed
```bash
cmake [..] -DJSON_VALIDATOR_HUNTER=ON [..]
```
#### Building as a CMake-subdirectory from within another project
Adding this library as a subdirectory to a parent project is one way of
building it.
If the parent project already used `find_package()` to find the CMake-package of nlohmann_json or includes it as a submodule likewise.
#### Building directly, finding a CMake-package. (short)
When nlohmann-json has been installed, it provides files which allows
CMake's `find_package()` to be used.
This library is using this mechanism if `nlohmann_json::nlohmann_json`-target
does not exist.
#### Install
Since version 2.1.0 this library can be installed and CMake-package-files will be
created accordingly. If the installation of nlohmann-json and this library
is done into default unix-system-paths CMake will be able to find this
library by simply doing:
```CMake
find_package(nlohmann_json_schema_validator REQUIRED)
```
and
```CMake
target_link_libraries(<your-target> [..] nlohmann_json_schema_validator)
```
to build and link.
### Code
### Api example
See also `app/json-schema-validate.cpp`.

16
docs/cmake/index.md Normal file
View File

@ -0,0 +1,16 @@
# CMake configuration guide
:::{toctree}
---
maxdepth: 2
glob: true
hidden: true
---
:::
:::{include} ../../README.md
---
start-after: <!-- SHINX-CMAKE-START -->
end-before: <!-- SHINX-CMAKE-END -->
---
:::

View File

@ -3,14 +3,13 @@
:::{toctree}
---
maxdepth: 2
titlesonly: true
caption: Contents
glob: true
hidden: true
---
CONTRIBUTING
changelog
roadmap
cmake/index.md
:::
:::{include} ../README.md