From b7d43900c4b6f6d6aa91039dc96517d6f56a9d43 Mon Sep 17 00:00:00 2001 From: "peng.li24" <734991033@qq.com> Date: Mon, 14 Sep 2026 16:48:07 +0800 Subject: [PATCH] =?UTF-8?q?install:=20CLI=20=E8=A3=85=E5=88=B0=20/?= =?UTF-8?q?bin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit cli/ 是独立 Cargo 项目,此前不参与 cmake --install,`make install` 后系统里没有 kvspace 命令。现在: - 新增自定义目标 kvspace-cli(ALL):cargo build cli/,并把本仓刚构建的 dispatch 前端目录交给链接器(RUSTFLAGS=-L native=...) - install(PROGRAMS ... DESTINATION ${CMAKE_INSTALL_BINDIR}) → prefix 默认 /usr,即 /usr/bin(与 kvlang 的 CLI 一致) - 无 cargo 时跳过并提示(不阻断库的安装) 验证:cmake --build 自动构建 CLI;cmake --install 产出 /bin/kvspace + 头 + lib/kvspace + pkgconfig。 Co-Authored-By: Claude Code --- CMakeLists.txt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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()