本目录用于构建和打包 Apache IoTDB C++ Session SDK。如果你已经拿到了 iotdb-session-cpp-<version>-<classifier>.zip,在自己的 C/C++ 项目中使用 时不需要 Maven、Thrift、Boost,也不需要本源码目录。解压 zip 后,让项目引用 其中的 include/ 和 lib/,并在运行时把 IoTDB 动态库随可执行文件一起部署 即可。
请按应用运行环境选择对应 classifier:
| 目标环境 | Zip classifier 后缀 |
|---|---|
| Linux x86_64,glibc >= 2.28 | linux-x86_64-glibc2.28 |
| Linux aarch64,glibc >= 2.28 | linux-aarch64-glibc2.28 |
| macOS x86_64 | macos-x86_64 |
| macOS arm64 | macos-aarch64 |
| Windows + Visual Studio 2017 | windows-x86_64-msvc14.1 |
| Windows + Visual Studio 2019 | windows-x86_64-msvc14.2 |
| Windows + Visual Studio 2022 | windows-x86_64-msvc14.3 |
| Windows + Visual Studio 2026 | windows-x86_64-msvc14.4 |
示例:
unzip iotdb-session-cpp-2.0.7-SNAPSHOT-linux-x86_64-glibc2.28.zip export IOTDB_SESSION_HOME=$PWD/iotdb-session-cpp-2.0.7-SNAPSHOT-linux-x86_64-glibc2.28
解压后的 SDK 主要包含:
include/ C/C++ 公开 API 头文件 lib/ libiotdb_session.so/.dylib 或 iotdb_session.dll + .lib cmake/iotdb-session-config.cmake CMake package config pkgconfig/iotdb-session.pc pkg-config 元数据 examples/ 示例源码和示例 CMakeLists.txt third_party/DEPENDENCIES.md 内置第三方依赖说明
Thrift 和 Boost 已封装进 iotdb_session,普通应用接入时不需要额外安装 Thrift 或 Boost 的头文件/库。
项目中的 CMakeLists.txt 可这样写:
cmake_minimum_required(VERSION 3.15) project(my_iotdb_app LANGUAGES CXX) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(iotdb-session REQUIRED CONFIG) add_executable(my_iotdb_app main.cpp) target_link_libraries(my_iotdb_app PRIVATE IoTDB::iotdb_session)
配置时传入 SDK 解压目录:
cmake -S . -B build -DCMAKE_PREFIX_PATH="$IOTDB_SESSION_HOME" cmake --build build
Windows 上请使用与 SDK 包一致的 Visual Studio 代际。例如 windows-x86_64-msvc14.3 对应 Visual Studio 2022。
Visual Studio 用户可以直接打开项目目录,并在 CMake 缓存设置里把 SDK 解压目录 加入 CMAKE_PREFIX_PATH;也可以在 Developer Command Prompt 中执行:
cmake -S . -B build -G "Visual Studio 17 2022" -A x64 ^ -DCMAKE_PREFIX_PATH="%IOTDB_SESSION_HOME%" cmake --build build --config Release copy "%IOTDB_SESSION_HOME%\lib\iotdb_session.dll" build\Release\
export PKG_CONFIG_PATH="$IOTDB_SESSION_HOME/pkgconfig:$PKG_CONFIG_PATH" c++ -std=c++11 main.cpp $(pkg-config --cflags --libs iotdb-session) -o my_iotdb_app
运行时如果系统找不到动态库,可以把动态库复制到可执行文件同目录,或设置库搜索 路径:
cp -P "$IOTDB_SESSION_HOME"/lib/libiotdb_session.so* . ./my_iotdb_app # 或者: LD_LIBRARY_PATH="$IOTDB_SESSION_HOME/lib:$LD_LIBRARY_PATH" ./my_iotdb_app
Linux:
c++ -std=c++11 main.cpp \ -I"$IOTDB_SESSION_HOME/include" \ -L"$IOTDB_SESSION_HOME/lib" \ -liotdb_session -pthread \ -Wl,-rpath,"$IOTDB_SESSION_HOME/lib" \ -o my_iotdb_app
macOS:
c++ -std=c++11 main.cpp \ -I"$IOTDB_SESSION_HOME/include" \ -L"$IOTDB_SESSION_HOME/lib" \ -liotdb_session \ -Wl,-rpath,"$IOTDB_SESSION_HOME/lib" \ -o my_iotdb_app
Windows + MSVC:
cl /std:c++14 /EHsc main.cpp /I "%IOTDB_SESSION_HOME%\include" ^ /link /LIBPATH:"%IOTDB_SESSION_HOME%\lib" iotdb_session.lib copy "%IOTDB_SESSION_HOME%\lib\iotdb_session.dll" .
SDK 包内 examples/ 目录包含示例源码。进入 SDK 解压根目录后执行:
cmake -S examples -B examples-build -DCMAKE_BUILD_TYPE=Release cmake --build examples-build
Windows:
cmake -S examples -B examples-build -G "Visual Studio 17 2022" -A x64 cmake --build examples-build --config Release
examples 构建会把 IoTDB 运行时库复制到每个示例可执行文件旁边。也可以执行 cmake --build examples-build --target example-dist 生成包含示例和运行时库的 dist/ 目录。
#include "Session.h" #include <iostream> #include <memory> int main() { auto session = std::make_shared<Session>("127.0.0.1", 6667, "root", "root"); session->open(false); session->setStorageGroup("root.test"); if (!session->checkTimeseriesExists("root.test.d0.s0")) { session->createTimeseries( "root.test.d0.s0", TSDataType::INT64, TSEncoding::RLE, CompressionType::SNAPPY); } session->close(); std::cout << "IoTDB C++ session is ready." << std::endl; return 0; }
包内 examples/ 下的示例默认连接 127.0.0.1:6667,用户名和密码均为 root。运行示例前请先启动 IoTDB 服务。
manylinux_2_28 容器中使用 GCC 14 构建,目标机器需要 glibc 2.28 或更新 版本。/MD)。目标机器如果没有对应运行时,请安装 与 Visual Studio 代际匹配的 Microsoft Visual C++ Redistributable。libiotdb_session.so、libiotdb_session.dylib 或 iotdb_session.dll 放在可执行文件同目录,或配置平台对应的动态库搜索路径。Linux 手动复制时请保留 libiotdb_session.so* 的符号链接链。C++ client 使用本目录下单一的 CMakeLists.txt 构建。外层 Maven POM 只是调用 CMake 的包装;没有 Maven 时也可以直接使用 CMake。
| 目标 | 命令 |
|---|---|
| 只构建库(Linux/macOS) | mvn -P with-cpp -pl iotdb-client/client-cpp -am -DskipTests package |
| 构建 Debug 库(Linux/macOS) | mvn -P with-cpp -pl iotdb-client/client-cpp -am -DskipTests -Dcmake.build.type=Debug package |
| 只构建库(Windows / MSVC) | mvn -P with-cpp -pl iotdb-client/client-cpp -am -DskipTests "-Dboost.include.dir=C:\boost_1_88_0" package |
| 构建 Debug 库(Windows / MSVC) | mvn -P with-cpp -pl iotdb-client/client-cpp -am -DskipTests "-Dcmake.build.type=Debug" "-Dboost.include.dir=C:\boost_1_88_0" package |
| 直接使用 CMake | cmake -S iotdb-client/client-cpp -B build && cmake --build build --target install |
Maven 构建会把 SDK 安装到 target/install/,并生成 target/iotdb-session-cpp-<version>-<classifier>.zip 及对应 .sha512。 可通过 -Dclient.cpp.package.classifier=... 指定 classifier。
通过 Maven 构建时,常用 CMake 选项对应的 Maven 属性如下:
| CMake 变量 | Maven 属性 |
|---|---|
WITH_SSL | with.ssl,例如 -Dwith.ssl=ON |
IOTDB_OFFLINE | iotdb.offline |
BUILD_TESTING | build.tests |
IOTDB_DEPS_DIR | iotdb.deps.dir |
BOOST_INCLUDEDIR | boost.include.dir |
CMAKE_BUILD_TYPE | cmake.build.type,例如 -Dcmake.build.type=Debug |
直接使用 CMake 时传入 -DWITH_SSL=ON、-DIOTDB_OFFLINE=ON 等即可。 Debug 构建请在配置阶段传入 -DCMAKE_BUILD_TYPE=Debug。Windows 使用 Visual Studio 生成器时也需要传入该选项,以便内置 Thrift 静态库使用 Debug MSVC 运行时; 随后用 cmake --build build --config Debug --target install 构建安装。
# Linux/macOS cmake -S iotdb-client/client-cpp -B build -DCMAKE_BUILD_TYPE=Debug cmake --build build --target install # Windows / Visual Studio cmake -S iotdb-client/client-cpp -B build -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Debug cmake --build build --config Debug --target install
离线构建需要先把依赖源码包放入 third-party/<platform>/,然后执行:
mvn -P with-cpp -pl iotdb-client/client-cpp -am -DskipTests \ -Diotdb.offline=ON package
或直接使用 CMake:
cmake -S iotdb-client/client-cpp -B build -DIOTDB_OFFLINE=ON cmake --build build --config Release --target install
完整依赖清单、SSL、测试和格式化说明请参考英文版 README.md。