diff --git a/CMakeLists.txt b/CMakeLists.txt index 90468c2..65ec11d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,3 +38,22 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTA configure_file(kvspace.pc.in ${CMAKE_CURRENT_BINARY_DIR}/kvspace.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kvspace.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + +# ── CLI(cli/ 独立 Cargo 项目)────────────────────────────────────── +# 走本仓 dispatch 前端的 C ABI,故须在 kvspace 目标之后构建; +# 安装到 /bin(prefix 默认 /usr → /usr/bin,与 kvlang 的 CLI 一致)。 +find_program(CARGO_EXECUTABLE cargo) +if(CARGO_EXECUTABLE) + set(KVSPACE_CLI_BIN "${CMAKE_CURRENT_SOURCE_DIR}/cli/target/release/kvspace") + add_custom_target(kvspace-cli ALL + COMMAND ${CMAKE_COMMAND} -E env + "RUSTFLAGS=-L native=$" + "${CARGO_EXECUTABLE}" build --release + --manifest-path "${CMAKE_CURRENT_SOURCE_DIR}/cli/Cargo.toml" + BYPRODUCTS "${KVSPACE_CLI_BIN}" + DEPENDS kvspace + COMMENT "构建 kvspace CLI(cli/)") + install(PROGRAMS "${KVSPACE_CLI_BIN}" DESTINATION ${CMAKE_INSTALL_BINDIR}) +else() + message(STATUS "未找到 cargo,跳过 kvspace CLI(cli/)") +endif()