Skip to content

install: CLI 装到 <prefix>/bin - #22

Merged
miaobyte merged 1 commit into
mainfrom
feat/install-cli
Sep 15, 2026
Merged

miaobyte merged 1 commit into
mainfrom
feat/install-cli

Conversation

@miaobyte

Copy link
Copy Markdown
Contributor

问题

cli/(kvspace CLI)是独立 Cargo 项目,此前不参与 cmake --install —— 构建安装后系统里没有 kvspace 命令,它只出现在 release 包里。

变更

add_custom_target(kvspace-cli ALL
  COMMAND ${CMAKE_COMMAND} -E env "RUSTFLAGS=-L native=$<TARGET_FILE_DIR:kvspace>"
          cargo build --release --manifest-path .../cli/Cargo.toml
  DEPENDS kvspace)
install(PROGRAMS .../cli/target/release/kvspace DESTINATION ${CMAKE_INSTALL_BINDIR})
  • 自动构建 CLI,并把本仓刚构建的 dispatch 前端目录交给链接器
  • 安装到 <prefix>/bin —— prefix 默认 /usr,即 /usr/bin,与 kvlang 的 CLI 一致
  • 无 cargo 时跳过并提示(不阻断库的安装)

验证

$ cmake -B build -DCMAKE_INSTALL_PREFIX=/tmp/kvsp-inst && cmake --build build -j
[100%] 构建 kvspace CLI(cli/)
$ sudo cmake --install build
-- Installing: /tmp/kvsp-inst/bin/kvspace          ← 新
-- Installing: /tmp/kvsp-inst/include/kvspace/*.h
-- Installing: /tmp/kvsp-inst/lib/kvspace/libkvspace.so.1.0.0
-- Installing: /tmp/kvsp-inst/lib/pkgconfig/kvspace.pc

$ /tmp/kvsp-inst/bin/kvspace
usage: kvspace <subcommand> [args]   (DSN from env KVSPACE)   ← 可运行

🤖 Generated with Claude Code

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 产出
<prefix>/bin/kvspace + 头 + lib/kvspace + pkgconfig。

Co-Authored-By: Claude Code <noreply@anthropic.com>
@miaobyte
miaobyte merged commit 47defc9 into main Sep 15, 2026
4 checks passed
@miaobyte
miaobyte deleted the feat/install-cli branch September 15, 2026 02:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant