This is an automated email from the ASF dual-hosted git repository.
lizhanhui pushed a commit to branch v5.0-rc2
in repository https://gitbox.apache.org/repos/asf/rocketmq-client-cpp.git
The following commit(s) were added to refs/heads/v5.0-rc2 by this push:
new 2222727 Update README.md
2222727 is described below
commit 2222727b5472b4ed6f9922c780376568b0a982bf
Author: Li Zhanhui <[email protected]>
AuthorDate: Mon Aug 8 20:34:00 2022 +0800
Update README.md
---
.gitignore | 1 +
README.md | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 68 insertions(+), 1 deletion(-)
diff --git a/.gitignore b/.gitignore
index f3ec0b2..d754e52 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@ compile_commands.json
.vscode
logs
_build
+build
cmake-build-debug-coverage
.idea
.cache
diff --git a/README.md b/README.md
index 7ce2438..9b3463a 100644
--- a/README.md
+++ b/README.md
@@ -44,8 +44,10 @@ if "com_google_googletest" not in native.existing_rules():
```
### How To Build
-[Google Bazel](https://bazel.build/) is the primary build tool we supported,
Please follow [bazel installation
guide](https://docs.bazel.build/versions/main/install.html).
+#### Build with Bazel
+
+[Google Bazel](https://bazel.build/) is the primary build tool we supported,
Please follow [bazel installation
guide](https://docs.bazel.build/versions/main/install.html).
1. Build
From the repository root,
@@ -58,6 +60,70 @@ if "com_google_googletest" not in native.existing_rules():
bazel test //src/test/cpp/ut/...
```
+#### Build with CMake
+
+ 1. Make sure you have installed a modern CMake 3.13+ and C++ compilation
toolchain that at least supports C++11;
+
+ 2. Following [gRPC installation
instructions](https://grpc.io/docs/languages/cpp/quickstart/) to install grpc.
+ gRPC
[v1.48.0](https://shutian.oss-cn-hangzhou.aliyuncs.com/cdn/grpc/grpc_v1.48.0.tar.gz)
with its third-party dependencies may be downloaded.
+
+ Note:
+ * Remember to `export MY_INSTALL_DIR=$HOME/grpc` as our primary
CMakeLists.txt hints
+
+ ```cmake
+ list(APPEND CMAKE_PREFIX_PATH $ENV{HOME}/grpc)
+ ```
+ If your grpc is installed somewhere else yet non-standard, please
adjust accordingly.
+
+ * When configure grpc, use your pre-installed system package if
possible;
+ ```shell
+ cmake -DCMAKE_INSTALL_PREFIX=$HOME/grpc
-DgRPC_SSL_PROVIDER=package -DgRPC_ZLIB_PROVIDER=package
+ ```
+ A few more options are involved. Check CMakeLists.txt of grpc
+ ```cmake
+ # Providers for third-party dependencies (gRPC_*_PROVIDER
properties):
+ # "module": build the dependency using sources from git submodule
(under third_party)
+ # "package": use cmake's find_package functionality to locate a
pre-installed dependency
+
+ set(gRPC_ZLIB_PROVIDER "module" CACHE STRING "Provider of zlib
library")
+ set_property(CACHE gRPC_ZLIB_PROVIDER PROPERTY STRINGS "module"
"package")
+
+ set(gRPC_CARES_PROVIDER "module" CACHE STRING "Provider of c-ares
library")
+ set_property(CACHE gRPC_CARES_PROVIDER PROPERTY STRINGS "module"
"package")
+
+ set(gRPC_RE2_PROVIDER "module" CACHE STRING "Provider of re2
library")
+ set_property(CACHE gRPC_RE2_PROVIDER PROPERTY STRINGS "module"
"package")
+
+ set(gRPC_SSL_PROVIDER "module" CACHE STRING "Provider of ssl
library")
+ set_property(CACHE gRPC_SSL_PROVIDER PROPERTY STRINGS "module"
"package")
+
+ set(gRPC_PROTOBUF_PROVIDER "module" CACHE STRING "Provider of
protobuf library")
+ set_property(CACHE gRPC_PROTOBUF_PROVIDER PROPERTY STRINGS
"module" "package")
+
+ set(gRPC_PROTOBUF_PACKAGE_TYPE "" CACHE STRING "Algorithm for
searching protobuf package")
+ set_property(CACHE gRPC_PROTOBUF_PACKAGE_TYPE PROPERTY STRINGS
"CONFIG" "MODULE")
+
+ if(gRPC_BUILD_TESTS)
+ set(gRPC_BENCHMARK_PROVIDER "module" CACHE STRING "Provider of
benchmark library")
+ set_property(CACHE gRPC_BENCHMARK_PROVIDER PROPERTY STRINGS
"module" "package")
+ else()
+ set(gRPC_BENCHMARK_PROVIDER "none")
+ endif()
+
+ set(gRPC_ABSL_PROVIDER "module" CACHE STRING "Provider of absl
library")
+ set_property(CACHE gRPC_ABSL_PROVIDER PROPERTY STRINGS "module"
"package")
+ ```
+
+ 3. OpenSSL development package is also required.
+
+ 4. Run the following commands to build from ${YOUR_GIT_REPOSITORY}/cpp
directory
+ ```shell
+ mkdir build && cd build
+ cmake -DOPENSSL_ROOT_DIR=/usr/local/Cellar/[email protected]/1.1.1q ..
+ make -j $(nproc)
+ ```
+ 5. Static archive and dynamic linked libraries are found in the build
directory.
+
### IDE
[Visual Studio Code](https://code.visualstudio.com/) +
[Clangd](https://clangd.llvm.org/) is the recommended development toolset.
1. VSCode + Clangd