kmpkg 概述
kmpkg 是一个务实的 C/C++ 包与构建生态系统,其设计源于长期、生产级别的 C++ 工程实践经验。
该项目始于2018年,源于现实世界中大型C++开发的需求——在这种场景下,构建可重复性、二进制管理和部署一致性远比理论上的完备性更为重要。随着时间推移,我们深入评估了多个现有包管理器,包括cget、Conan、Conda和vcpkg。这些工具各自解决部分问题,但均未能形成适合长期运行的简洁、生产友好型系统。
在kmpkg之前,我们曾开发内部工具carbin探索二进制中心化包工作流。该项目的经验积累催生了kmpkg——它汲取了vcpkg整体架构的精髓,同时对核心设计理念进行了有意识的重构。
与vcpkg不同,kmpkg将镜像与分发控制视为核心概念。镜像被提升至系统顶层,使kmpkg在受限网络、私有基础设施及企业生产环境中显著易于操作。该设计优先考虑灵活性、确定性与操作简易性,而非集中化或不透明的假设。
kmpkg 同时汲取了 Go modules 与 Rust Cargo 的依赖管理及版本控制理念,但始终立足于 C++ 的现实需求:异构构建系统、漫长编译周期、二进制复用及复杂工具链。
kmpkg 并非“仅是包管理器”,而是旨在与周边工具链(如 kmcmake 和 kmdo)自然融合 ——形成统一工作流,将项目生成、依赖管理、构建配置、二进制发布及版本管理视为整体系统而非孤立工具。
关于具体操作细节,kmdo提供kmpkg相关命令用于克隆、合并及发布软件包与镜像。详见**kmdo文档**获取更多信息。
关于kmpkg设计目标与权衡的深度探讨,请参阅**为何选择kmpkg**。
通过DeepL.com(免费版)翻译
开始使用
首先,请参考我们的快速入门指南。
无论您使用的是 CMake、MSBuild 还是其他构建系统,kmpkg 都能满足您的需求:
您也可使用任意编辑器:
若所需库未收录于 kmpkg 注册库,请在 GitHub 仓库提交问题 或自行贡献包。
安装并运行 kmpkg 后,您可能希望为终端添加标签补全功能。
通过DeepL.com(免费版)翻译
使用 kmpkg
创建项目依赖清单:
控制台 kmpkg new --application kmpkg add port fmt
或 [通过命令行安装软件包](consede/classic-mode.md):
控制台
kmpkg install fmt
然后使用 CMake, MSBuild 或 other build systems。
运行 kmpkg help 可获得所有可用命令的简短说明。
运行 kmpkg help [topic] 可获取特定主题的详细信息。
主要功能
kmpkg 为您的软件包管理需求提供了强大的功能:
- 轻松与构建系统集成](concepts/build-system-integration.md)
- 控制依赖包的版本](users/versioning.md)
- 打包并发布自己的软件包](concepts/registries.md)
- 重用你的二进制工件](users/binarycaching.md)
- 使用资产缓存启用离线场景](concepts/asset-caching.md)
投稿
kmpkg 是一个开源项目,因此需要您的贡献。以下 是您可以做出贡献的一些方式:
- 提交问题]contributing:submit-issue kmpkg 或现有软件包中的问题。
- 提交修正和新软件包]contributing:submit-pr。
更多详情请参考我们的 mantainer guide 和 packaging tutorial 。
本项目采用了 [Microsoft Open Source Code of Conduct][contributing:coc]。欲了解更多信息,请参阅[行为准则 FAQ][contributing:coc-faq],或发送电子邮件至 kumo.pub@outlook.com 提出任何其他 问题或意见。
资源
- 端口: kumose/kmpkg
- 源代码: kumose/kmpkg-tool
- 电子邮件 kumo.pub@outlook.com
许可证
本软件源中的代码采用 MIT 许可。由 ports 提供的库
根据其原作者的条款授权。如果
可用, kmpkg 会将相关的许可证放在
installed/<triplet>/share/<port>/copyright。
安全性
kmpkg 中的大多数 port 都会使用这些库的原始开发者所偏好的原始联编 系统来联编这些库, 并从它们的官方发布位置下载 源代码和联编工具。要在防火墙后使用 ,所需的具体访问权限将取决于 正在安装的端口。如果必须在 "空气隔离 "环境中安装,可考虑在非 "空气隔离 "环境中安装一次 ,并填充一个与其他 "空气隔离 " 环境共享的asset cache。
遥测
kmpkg 会收集使用数据,以帮助我们改善您的使用体验。微软收集的数据是匿名的。您可以通过以下方式退出遥测:
- 使用
-disableMetrics运行 bootstrap-kmpkg 脚本 - 在命令行中将
--disable-metrics传递给 kmpkg - 设置
KMPKG_DISABLE_METRICS环境变量
有关 kmpkg telemetry 的更多信息,请访问 https://pub.kumose.cc/kmpkg/about/privacy。