add bazel build demo
This commit is contained in:
parent
4ab991c41b
commit
567a0366a0
78
README.md
78
README.md
@ -147,6 +147,84 @@ endif()
|
|||||||
|
|
||||||
`thirdparty/nlohmann_json` is then a complete copy of this source tree.
|
`thirdparty/nlohmann_json` is then a complete copy of this source tree.
|
||||||
|
|
||||||
|
### Bazel
|
||||||
|
|
||||||
|
You can also use the `nlohmann/json` in Bazel.
|
||||||
|
|
||||||
|
#### Add External Dependency in WORKSPACE
|
||||||
|
|
||||||
|
You can write external dependency `github_nlohmann_json` at your WORKSPACE file.
|
||||||
|
|
||||||
|
```python
|
||||||
|
workspace(name = "nlohmann_json_demo")
|
||||||
|
|
||||||
|
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
||||||
|
|
||||||
|
http_archive(
|
||||||
|
name = "github_nlohmann_json",
|
||||||
|
sha256 = "69cc88207ce91347ea530b227ff0776db82dcb8de6704e1a3d74f4841bc651cf",
|
||||||
|
urls = [
|
||||||
|
"https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip",
|
||||||
|
],
|
||||||
|
build_file = "//third_party:nlohmann_json.BUILD",
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
`nlohmann_json.BUILD` define the bazel rule for the `nlohmann/json` library.
|
||||||
|
|
||||||
|
```python
|
||||||
|
licenses(["notice"])
|
||||||
|
|
||||||
|
exports_files(["LICENSE.MIT"])
|
||||||
|
|
||||||
|
cc_library(
|
||||||
|
name = "json",
|
||||||
|
hdrs = glob([
|
||||||
|
"include/**/*.hpp",
|
||||||
|
]),
|
||||||
|
includes = ["include"],
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
alwayslink = 1,
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
NOTE: sha256 is public by the release, and you can also get `sha256` as follow command:
|
||||||
|
|
||||||
|
```
|
||||||
|
curl -L https://github.com/nlohmann/json/releases/download/v3.6.1/include.zip | sha256sum
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Usage
|
||||||
|
|
||||||
|
You can write one simple c++ binary rule and depend `@github_nlohmann_json//:json` target.
|
||||||
|
|
||||||
|
```
|
||||||
|
cc_binary(
|
||||||
|
name = "json_test",
|
||||||
|
srcs = ["json_test.cc"],
|
||||||
|
deps = [
|
||||||
|
"@github_nlohmann_json//:json",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
After it, you can include `nlohmann/json.hpp` file.
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
#include "nlohmann/json.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
int main(int argc, char** argv) {
|
||||||
|
nlohmann::json obj = {
|
||||||
|
{"bazel", "https://bazel.build"},
|
||||||
|
{"cmake", "https://cmake.org/"},
|
||||||
|
};
|
||||||
|
std::cout << obj.dump(4) << std::endl;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
NOTE: you should use double quotation marks instead of angle brackets. You can see details at [horance-liu/nlohmann_json_demo](https://github.com/horance-liu/nlohmann_json_demo) project.
|
||||||
|
|
||||||
### Package Managers
|
### Package Managers
|
||||||
|
|
||||||
:beer: If you are using OS X and [Homebrew](http://brew.sh), just type `brew tap nlohmann/json` and `brew install nlohmann_json` and you're set. If you want the bleeding edge rather than the latest release, use `brew install nlohmann_json --HEAD`.
|
:beer: If you are using OS X and [Homebrew](http://brew.sh), just type `brew tap nlohmann/json` and `brew install nlohmann_json` and you're set. If you want the bleeding edge rather than the latest release, use `brew install nlohmann_json --HEAD`.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user