This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 599bc864251 Add instructions of compiling client-cpp with VS2019.
(#12739)
599bc864251 is described below
commit 599bc864251a4e1bcfd32001c51b1e08387de922
Author: Jiang Tian <[email protected]>
AuthorDate: Fri Jun 14 10:41:29 2024 +0800
Add instructions of compiling client-cpp with VS2019. (#12739)
---
iotdb-client/client-cpp/README.md | 80 ++++++++++++++++++++++++++++-----------
1 file changed, 57 insertions(+), 23 deletions(-)
diff --git a/iotdb-client/client-cpp/README.md
b/iotdb-client/client-cpp/README.md
index 49d1c72ae18..81983e06e2e 100644
--- a/iotdb-client/client-cpp/README.md
+++ b/iotdb-client/client-cpp/README.md
@@ -20,46 +20,79 @@
-->
# Building C++ Client
-To compile cpp client, add "-P with-cpp" option to maven build command.
-
-The compiling requires the module "compile-tools" to be built first.
-For more information, please refer to "compile-tools/README.md".
-
-Explicitly using mvnw here as the build requires maven 3.9 and the default
installation is older
-
## Compile and Test:
### Compile
-`mvn clean package -P with-cpp -pl iotdb-client/client-cpp -am -DskipTests`
-### Test
-First build IoTDB server
-
-Explicitly using "install" instead of package in order to be sure we're using
libs built on this machine
+#### Unix
+To compile the cpp client, use the following command:
+`mvn clean package -P with-cpp -pl iotdb-client/client-cpp -am -DskipTests`
-`mvn clean install -P with-cpp -pl distribution,iotdb-client/client-cpp -am
-DskipTests`
+#### Windows
+To compile on Windows, please install Boost first and add following Maven
+settings:
+```
+-Dboost.include.dir=${your boost header folder} -Dboost.library.dir=${your
boost lib (stage) folder}`
+```
-After run verify
+The thrift dependency that the cpp client uses is incompatible with MinGW,
please use Visual
+Studio. It is highly recommended to use Visual Studio 2022 or later.
-`mvn clean verify -P with-cpp -pl iotdb-client/client-cpp -am`
+##### Visual Studio 2022
+If you are using Visual Studio 2022, you can compile the cpp client with the
following command:
-To compile on Windows, please install Boost first and add following Maven
settings:
```
--Dboost.include.dir=${your boost header folder} -Dboost.library.dir=${your
boost lib (stage) folder}`
+mvn clean package -P with-cpp -pl iotdb-client/client-cpp -am -DskipTest
+-D"boost.include.dir"="D:\boost_1_75_0"
-D"boost.library.dir"="D:\boost_1_75_0\stage\lib"
```
-e.g.,
+#### Visual Studio 2019 or older
+If you are using Visual Studio 2019 or older, the pre-built Thrift library is
incompatible. You
+will have to compile the thrift library manually:
+
+1. Install the dependencies of Thrift:
+* flex http://gnuwin32.sourceforge.net/packages/flex.htm
+* bison http://gnuwin32.sourceforge.net/packages/bison.htm
+* openssl https://slproweb.com/products/Win32OpenSSL.html
+
+2. Clone the repository: https://github.com/apache/iotdb-bin-resources.
+
+3. Enter the "iotdb-tools-thrift" folder in the cloned repository; use the
following command to
+ compile the thrift library:
+
+`mvn install`
+
+4. If you encounter a problem like "cannot find 'unistd.h'", please open the
file
+"iotdb-bin-resources\iotdb-tools-thrift\target\build\compiler\cpp\thrift\thriftl.cc"
and replace
+"#include <unistd.h>" with "#include <io.h>" and "#include <process.h>"; then,
rerun the command
+ in the third step;
+
+5. Return to the cpp client repository and compile it with:
+
```
mvn clean package -P with-cpp -pl iotdb-client/client-cpp -am -DskipTest
-D"boost.include.dir"="D:\boost_1_75_0"
-D"boost.library.dir"="D:\boost_1_75_0\stage\lib"
```
-##
+
+### Test
+First build IoTDB server together with the cpp client.
+
+Explicitly using "install" instead of package in order to be sure we're using
libs built on this
+machine.
+
+`mvn clean install -P with-cpp -pl distribution,iotdb-client/client-cpp -am
-DskipTests`
+
+After run verify
+
+`mvn clean verify -P with-cpp -pl iotdb-client/client-cpp -am`
+
+## Package Hierarchy
If the compilation finishes successfully, the packaged zip file will be placed
under
"client-cpp/target/client-cpp-${project.version}-cpp-${os}.zip".
-On Mac machines, the hierarchy of the package should look like this:
+On macOS, the hierarchy of the package should look like this:
```
.
+-- client
@@ -80,12 +113,13 @@ On Mac machines, the hierarchy of the package should look
like this:
## Using C++ Client:
```
-1. Put the zip file "client-cpp-${project.version}-cpp-${os}.zip" wherever you
want
+1. Put the zip file "client-cpp-${project.version}-cpp-${os}.zip" wherever you
want;
-2. Unzip the archive using the following command, and then you can get the two
directories mentioned above, the header file and the dynamic library
+2. Unzip the archive using the following command, and then you can get the two
directories
+mentioned above, the header file and the dynamic library:
unzip client-cpp-${project.version}-cpp-${os}.zip
-3. Write C++ code to call the operation interface of cpp-client to operate
IOTDB,
+3. Write C++ code to call the operation interface of the cpp client to operate
IoTDB,
for detail interface information, please refer to the link:
https://iotdb.apache.org/zh/UserGuide/Master/API/Programming-Cpp-Native-API.html
E.g: