-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup_client.sh
More file actions
executable file
·60 lines (49 loc) · 2.46 KB
/
Copy pathsetup_client.sh
File metadata and controls
executable file
·60 lines (49 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/bin/bash
#
# 准备 client/include 与 client/lib。
#
# 背景:C 与 C++ 客户端共用同一套 include/ 与 lib/,差别只在于 C 侧只 include SessionC.h。
# 头文件位于:iotdb-client/client-cpp/target/client-cpp-*-SNAPSHOT-cpp-linux-x86_64/include
# 库文件位于:iotdb-client/client-cpp/target/client-cpp-*-SNAPSHOT-cpp-linux-x86_64/lib
# 另需 gtest 头文件与静态库(测试框架)。
#
# 可用环境变量覆盖默认路径:
# CPP_CLIENT_DIR 指向 client-cpp-*-cpp-linux-x86_64 目录
# GTEST_DIR 指向含 include/gtest 与 lib/libgtest.a 的目录
set -e
ROOT="$(cd "$(dirname "$0")" && pwd)"
CPP_CLIENT_DIR="${CPP_CLIENT_DIR:-$(ls -d /data/iotdb-test/tool/timechodb-master/iotdb-client/client-cpp/target/client-cpp-*-cpp-linux-x86_64 2>/dev/null | head -1)}"
GTEST_DIR="${GTEST_DIR:-/data/iotdb-test/safe/client}"
echo "CPP_CLIENT_DIR = ${CPP_CLIENT_DIR}"
echo "GTEST_DIR = ${GTEST_DIR}"
if [ -z "${CPP_CLIENT_DIR}" ] || [ ! -d "${CPP_CLIENT_DIR}/include" ]; then
echo "!!! 未找到 C++ 客户端解压包,请设置 CPP_CLIENT_DIR"
exit 1
fi
mkdir -p "${ROOT}/client/include" "${ROOT}/client/lib"
# 1) 唯一的 IoTDB 头文件 SessionC.h
cp -f "${CPP_CLIENT_DIR}/include/SessionC.h" "${ROOT}/client/include/"
# 2) gtest 头文件
cp -rf "${GTEST_DIR}/include/gtest" "${ROOT}/client/include/"
# 3) 运行库(导出 ts_* C 符号的 libiotdb_session.so 必须来自含 SessionC 的构建)
cp -f "${CPP_CLIENT_DIR}/lib/libiotdb_session.so" "${ROOT}/client/lib/"
# libthrift.a:#17801 重构后 thrift 已内嵌进 .so,新产物不再单独生成;存在才拷贝,避免脚本中断
if [ -f "${CPP_CLIENT_DIR}/lib/libthrift.a" ]; then
cp -f "${CPP_CLIENT_DIR}/lib/libthrift.a" "${ROOT}/client/lib/"
echo "已拷贝 libthrift.a(旧产物,链接不再依赖)"
else
echo "未发现 libthrift.a(thrift 已内嵌 libiotdb_session.so,无需外链)"
fi
# 4) gtest 静态库
cp -f "${GTEST_DIR}/lib/libgtest.a" "${ROOT}/client/lib/"
echo "校验 libiotdb_session.so 是否导出 ts_session_new ..."
if nm -D "${ROOT}/client/lib/libiotdb_session.so" 2>/dev/null | grep -q " ts_session_new"; then
echo "OK: 含 SessionC C 符号"
else
echo "!!! 警告: libiotdb_session.so 未导出 ts_session_new,链接将失败。"
echo " 请确认使用的是包含 SessionC 的 client-cpp 构建产物。"
fi
echo "完成。client/include:"
ls "${ROOT}/client/include"
echo "client/lib:"
ls "${ROOT}/client/lib"