Unverified Commit 240e6161 authored by Jin Hai's avatar Jin Hai Committed by GitHub
Browse files

Merge pull request #300 from yhmo/0.5.3

#260 C++ SDK README
parents e3b89199 be733f1e
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -12,7 +12,8 @@ Please mark all change in change log and use the ticket from JIRA.
- \#204 - improve grpc performance in search
- \#207 - Add more unittest for config set/get
- \#208 - optimize unittest to support run single test more easily
- \#284 - Change C++ SDK to shread library
- \#284 - Change C++ SDK to shared library
- \#260 - C++ SDK README

## Task

core/src/sdk/README.md

0 → 100644
+103 −0
Original line number Diff line number Diff line
### Build C++ SDK

The C++ SDK source code is under milvus/core/src/sdk. Build entire milvus project will also build the C++ SDK project. 
If you don't want to build the entire milvus project, follow below steps:
```shell
 # generate make files
 $ cd [Milvus root path]/core
 $ ./build.sh -l
 
 # build C++ SDK project
 $ cd [Milvus root path]/core/cmake_build
 $ make -C src/sdk
```

### Try C++ example

Firstly, you need to start a Milvus server.
If you've already built the entire milvus project, just start Milvus server with the following command:
```shell
 # start milvus server
 $ cd [Milvus root path]/core
 $ ./start_server.sh
```
You can also use Docker to start Milvus server:
```shell
 # pull milvus docker image and start milvus server
 $ docker pull milvusdb/milvus:latest
 $ docker run --runtime=nvidia -p 19530:19530 -d milvusdb/milvus:latest
```

Run C++ example:

```shell
 # run milvus C++ example
 $ cd [Milvus root path]/core/cmake_build/src/sdk/examples/simple
 $ ./sdk_simple
```

### Make your own C++ client project

Create a folder for the project, and copy C++ SDK header and library files into it.
```shell
 # create project folder
 $ mkdir MyMilvusClient
 $ cd MyMilvusClient
 
 # copy necessary files
 $ cp [Milvus root path]/core/cmake_build/src/sdk/libmilvus_sdk.so .
 $ cp [Milvus root path]/core/src/sdk/include/MilvusApi.h .
 $ cp [Milvus root path]/core/src/sdk/include/Status.h .
```

Create file main.cpp in the project folder, and copy the following code into it:
```shell
#include "./MilvusApi.h"
#include "./Status.h"

int main() {
  // connect to milvus server
  std::shared_ptr<milvus::Connection> conn = milvus::Connection::Create();
  milvus::ConnectParam param = {"127.0.0.1", "19530"};
  conn->Connect(param);
  
  // put your client code here
  
  milvus::Connection::Destroy(conn);
  return 0;
}
```

Create file CMakeList.txt in the project folder, and copy the following code into it:
```shell
 cmake_minimum_required(VERSION 3.14)
 project(test)
 set(CMAKE_CXX_STANDARD 14)

 add_executable(milvus_client main.cpp)
 target_link_libraries(milvus_client
         ${PROJECT_SOURCE_DIR}/libmilvus_sdk.so)
```

Now there are 5 files in your project:
```shell
MyMilvusClient
 |-CMakeList.txt
 |-main.cpp
 |-libmilvus_sdk.so
 |-MilvusApi.h
 |-Status.h
  ```

Build the project:
```shell
 $ mkdir cmake_build
 $ cd cmake_build
 $ cmake ..
 $ make
```

Run your client program:
```shell
 $ ./milvus_client
```
 No newline at end of file