This is an automated email from the ASF dual-hosted git repository.

jiangtian pushed a commit to branch update_client_cpp_readme
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 4468c643f1628c839c6c7c626611e2842fa51200
Author: jt2594838 <[email protected]>
AuthorDate: Fri Jun 14 10:40:16 2024 +0800

    Add instructions of compiling client-cpp with VS2019.
---
 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:

Reply via email to