File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # the ` pkg ` packager manager
2+
3+ ` pkg ` 是一款用于 C/C++ 的包管理工具,其基于源码和 git 进行依赖管理,基于 CMake 工具进行依赖的构建。
4+
5+ > 本文档适用于 pkg v0.3.0 及以上版本。
6+
7+ ## 基本功能
8+ 具体功能包括:
9+ - ` pkg init ` 子命令,用户初始化一个空的配置。
10+ - ` pkg fetch ` 子命令,用于从远程/本地缓存拉取源代码。
11+ - ` pkg install ` 子命令,用于构建从源代码编译库并安装。
12+ - ` pkg export ` 子命令,用于将本项目的依赖打包,方便进行依赖的迁移。
13+ - ` pkg import ` 子命令,用于导入` pkg export ` 所打包的依赖包。
14+ - ` pkg clean ` 子命令,用于清除依赖包的编译缓存。
15+ - ` pkg version ` 子命令,用于显示版本信息。
16+
17+ 对应的子命令后加上` --help ` 参数,可以查看对应子命令对应的可用参数,如 ` pkg fetch --help ` 。
18+
19+ ## 配置文件
20+ pkg 的配置文件采用 yaml 格式进行配置,默认文件名为` pkg.yaml ` ,具体可参考 example 目录下的文件。
21+
22+ - 代理功能
Original file line number Diff line number Diff line change 1+ ## pkg 的仓库身份认证
2+ 如果相关的依赖库需要登录认证权限,则需要配置相关的身份认证。
3+
4+ 这里以 gitlab 上(包括官方或者自己搭建的实例)存储的仓库为例,假设某个仓库是私有的,下面开展 pkg 身份认证的相关配置。
5+
6+ 1 . 在 gitlab 用户的的 profile 页面的 Access Tokens 子页面,新建一个 Access Tokens。权限勾选 ` read_repository ` 即可。
7+ 2 . 在本地需要下载依赖包的环境中,编辑 pkg 的配置文件 ` ~/.pkg/pkg.config.yaml ` ,添加刚刚生成的 Access Token:
8+ ``` yaml
9+ auth :
10+ git.private.org : # 私有仓库对地址对应的域名
11+ user : genshen # gitlab 的用户名
12+ token : ****** # 上面生成的 access token
13+ ` ` `
14+ 3. 保存 pkg.config.yaml,然后在执行 pkg fetch 命令的时候,pkg 工具就会自动通过配置的 access token 去拉去私有的仓库代码。
Original file line number Diff line number Diff line change 1+
2+ ## fetch
3+
4+ ## 缓存机制
5+ 缓存策略如下:
6+ - 如果系统缓存和 vendor/src 下均没有包,会从互联网下载包,放到系统缓存然后拷贝到vencor/src 下。
7+ - 如果仅在系统缓存中有包,则将系统缓存中的包拷贝到 vendor/src 下。
8+ - 如果在vendor/src 下有包,则不会进行额外操作。即使缓存目录中没有相关的依赖包,使用 pkg fetch 命令也不会重新下载,也不会将依赖包代码拷贝到缓存目录。
9+
10+ 注意:联网下载的依赖包会放到系统缓存,其位于 ` ~/.pkg/registry/default-pkg/src/ ` 下。
11+
12+ ## 使用代理
13+ pkg 从v0.6.0 开始,支持使用 http 和 https 代理,只需要设置环境变量 ` https_proxy ` 和 ` http_proxy ` 即可,这样就可通过代理从网络上下载依赖包了。
14+ ``` bash
15+ export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890
16+ pkg fetch
17+ ```
18+
19+ ## 选项
20+ - ` optional ` : If the ` optional ` flag of a package is set to true, this package will not be downloaded and built.
21+
22+ ## 命令行选项
23+ - ` no-cache ` : 跳过本地全局缓存,直接从互联网上下载包。
24+ - ` features ` : 选择启用的features,其中feature再 pkg.yaml 中的` features ` 定义。多个feature 用逗号分隔。
25+ - ` cmake-find-package-arg ` : 如果一个包是CMake构建的,该选项可用。它表示这个包被添加到整个工程中,生成的CMake ` find_package ` 语句的选项。
Original file line number Diff line number Diff line change 1+ ## Reference
2+
3+ ## 通用参数
4+ - version: v0.6.0 版本引入。
5+ - min_pkg_version: v0.6.0 版本引入。
6+ - pkg:
7+
8+ ## 镜像
9+ - git-replace:
10+
11+ ## features
12+ - features: v0.6.0 版本引入。
13+
14+ ## 依赖包 dependencies
15+ - 包名称:` github.com/fmtlib/fmt@4.1.0@fmt ` ,
16+
17+ ## features:
18+ ``` bash
19+ pkg fetch --features=nvidia,rocm
20+ ```
You can’t perform that action at this time.
0 commit comments