aboutsummaryrefslogtreecommitdiff
path: root/zh-cn/guide/package_management.md
diff options
context:
space:
mode:
Diffstat (limited to 'zh-cn/guide/package_management.md')
-rw-r--r--zh-cn/guide/package_management.md76
1 files changed, 49 insertions, 27 deletions
diff --git a/zh-cn/guide/package_management.md b/zh-cn/guide/package_management.md
index 02a8e280..0be1fdf1 100644
--- a/zh-cn/guide/package_management.md
+++ b/zh-cn/guide/package_management.md
@@ -1,5 +1,5 @@
-#### 本地内置模式
+## 本地内置模式
通过在项目中内置依赖包目录以及二进制包文件,可以方便的集成一些第三方的依赖库,这种方式比较简单直接,但是缺点也很明显,不方便管理。
@@ -46,7 +46,7 @@ $ xmake package -o ../test/packages
关于内置包的详细描述,还可以参考下相关文章,这里面有详细介绍:[依赖包的添加和自动检测机制](https://tboox.org/cn/2016/08/06/add-package-and-autocheck/)
-#### 系统查找模式
+## 系统查找模式
如果觉得上述内置包的管理方式非常不方便,可以通过xmake提供的内置接口`find_packages`。
@@ -92,13 +92,19 @@ target("test")
如果系统上装有`homebrew`, `pkg-config`等第三方工具,那么此接口会尝试使用它们去改进查找结果。
+另外,我们也可以从指定的包管理器查找包:
+
+```lua
+find_packages("brew::pcre2/libpcre2-8", "vcpkg::zlib")
+```
+
更完整的使用描述,请参考:[find_packages](/zh-cn/manual/builtin_modules?id=find_packages)接口文档。
-##### homebrew集成支持
+### homebrew集成支持
由于homebrew一般都是把包直接装到的系统中去了,因此用户不需要做任何集成工作,`find_packages`就已经原生无缝支持。
-##### vcpkg集成支持
+### vcpkg集成支持
目前xmake v2.2.2版本已经支持了vcpkg,用户只需要装完vcpkg后,执行`$ vcpkg integrate install`,xmake就能自动从系统中检测到vcpkg的根路径,然后自动适配里面包。
@@ -114,7 +120,7 @@ $ xmake f --vcpkg=f:\vcpkg
$ xmake g --vcpkg=f:\vcpkg
```
-#### 远程依赖模式
+## 远程依赖模式
这个在2.2.2版本后已经初步支持,用法上更加的简单,只需要设置对应的依赖包就行了,例如:
@@ -141,14 +147,14 @@ xmake会去远程拉取相关源码包,然后自动编译安装,最后编译
关于包依赖管理的更多相关信息和进展见相关issues:[Remote package management](https://github.com/xmake-io/xmake/issues/69)
-##### 目前支持的特性
+### 目前支持的特性
* 语义版本支持,例如:">= 1.1.0 < 1.2", "~1.6", "1.2.x", "1.*"
* 提供官方包仓库、自建私有仓库、项目内置仓库等多仓库管理支持
* 跨平台包编译集成支持(不同平台、不同架构的包可同时安装,快速切换使用)
* debug依赖包支持,实现源码调试
-##### 依赖包处理机制
+### 依赖包处理机制
这里我们简单介绍下整个依赖包的处理机制:
@@ -158,7 +164,7 @@ xmake会去远程拉取相关源码包,然后自动编译安装,最后编译
2. 检索匹配对应版本的包,然后下载、编译、安装(注:安装在特定xmake目录,不会干扰系统库环境)
3. 编译项目,最后自动链接启用的依赖包
-##### 快速上手
+### 快速上手
新建一个依赖tbox库的空工程:
@@ -187,7 +193,7 @@ $ xmake f -p android [--ndk=~/android-ndk-r16b]
$ xmake
```
-##### 语义版本设置
+### 语义版本设置
xmake的依赖包管理是完全支持语义版本选择的,例如:"~1.6.1",对于语义版本的具体描述见:[https://semver.org/](https://semver.org/)
@@ -213,9 +219,9 @@ add_requires("tbox master")
add_requires("tbox dev")
```
-##### 额外的包信息设置
+### 额外的包信息设置
-###### 可选包设置
+#### 可选包设置
如果指定的依赖包当前平台不支持,或者编译安装失败了,那么xmake会编译报错,这对于有些必须要依赖某些包才能工作的项目,这是合理的。
但是如果有些包是可选的依赖,即使没有也可以正常编译使用的话,可以设置为可选包:
@@ -224,7 +230,7 @@ add_requires("tbox dev")
add_requires("tbox", {optional = true})
```
-###### 禁用系统库
+#### 禁用系统库
默认的设置,xmake会去优先检测系统库是否存在(如果没设置版本要求),如果用户完全不想使用系统库以及第三方包管理提供的库,那么可以设置:
@@ -232,7 +238,7 @@ add_requires("tbox", {optional = true})
add_requires("tbox", {system = false})
```
-###### 使用调试版本的包
+#### 使用调试版本的包
如果我们想同时源码调试依赖包,那么可以设置为使用debug版本的包(当然前提是这个包支持debug编译):
@@ -251,7 +257,7 @@ package("openssl")
end)
```
-###### 传递额外的编译信息到包
+#### 传递额外的编译信息到包
某些包在编译时候有各种编译选项,我们也可以传递进来,当然包本身得支持:
@@ -261,11 +267,11 @@ add_requires("tbox", {configs = {small=true}})
传递`--small=true`给tbox包,使得编译安装的tbox包是启用此选项的。
-##### 第三方依赖包安装
+### 第三方依赖包安装
2.2.5版本之后,xmake支持对对第三方包管理器里面的依赖库安装支持,例如:conan,brew, vcpkg等
-添加homebrew的依赖包:
+#### 添加homebrew的依赖包
```lua
add_requires("brew::zlib", {alias = "zlib"}})
@@ -277,7 +283,7 @@ target("test")
add_packages("pcre2", "zlib")
```
-添加vcpkg的依赖包:
+#### 添加vcpkg的依赖包
```lua
add_requires("vcpkg::zlib", "vcpkg::pcre2")
@@ -288,7 +294,7 @@ target("test")
add_packages("vcpkg::zlib", "vcpkg::pcre2")
```
-添加conan的依赖包:
+#### 添加conan的依赖包
```lua
add_requires("CONAN::zlib/1.2.11@conan/stable", {alias = "zlib", debug = true})
@@ -320,7 +326,23 @@ please input: y (y/n)
[100%]: linking.release test
```
-##### 使用自建私有包仓库
+#### 添加clib的依赖包
+
+clib是一款基于源码的依赖包管理器,拉取的依赖包是直接下载对应的库源码,集成到项目中编译,而不是二进制库依赖。
+
+其在xmake中集成也很方便,唯一需要注意的是,还需要自己添加上对应库的源码到xmake.lua,例如:
+
+```lua
+add_requires("clib::clibs/bytes@0.0.4", {alias = "bytes"})
+
+target("test")
+ set_kind("binary")
+ add_files("clib/bytes/*.c")
+ add_files("src/*.c")
+ add_packages("bytes")
+```
+
+### 使用自建私有包仓库
如果需要的包不在官方仓库[xmake-repo](https://github.com/xmake-io/xmake-repo)中,我们可以提交贡献代码到仓库进行支持。
但如果有些包仅用于个人或者私有项目,我们可以建立一个私有仓库repo,仓库组织结构可参考:[xmake-repo](https://github.com/xmake-io/xmake-repo)
@@ -390,11 +412,11 @@ target("test")
add_packages("libjpeg")
```
-##### 包管理命令使用
+### 包管理命令使用
包管理命令`$ xmake require` 可用于手动显示的下载编译安装、卸载、检索、查看包信息。
-###### 安装指定包
+#### 安装指定包
```console
$ xmake require tbox
@@ -420,7 +442,7 @@ $ xmake require --extra="debug=true,config={small=true}" tbox
安装debug包,并且传递`small=true`的编译配置信息到包中去。
-###### 卸载指定包
+#### 卸载指定包
```console
$ xmake require --uninstall tbox
@@ -428,13 +450,13 @@ $ xmake require --uninstall tbox
这会完全卸载删除包文件。
-###### 查看包详细信息
+#### 查看包详细信息
```console
$ xmake require --info tbox
```
-###### 在当前仓库中搜索包
+#### 在当前仓库中搜索包
```console
$ xmake require --search tbox
@@ -448,13 +470,13 @@ $ xmake require --search pcr
会同时搜索到pcre, pcre2等包。
-###### 列举当前已安装的包
+#### 列举当前已安装的包
```console
$ xmake require --list
```
-##### 仓库管理命令使用
+### 仓库管理命令使用
上文已经简单讲过,添加私有仓库可以用(支持本地路径添加):
@@ -486,7 +508,7 @@ $ xmake repo --list
$ xmake repo -u
```
-##### 提交包到官方仓库
+### 提交包到官方仓库
目前这个特性刚完成不久,目前官方仓库的包还不是很多,有些包也许还不支持部分平台,不过这并不是太大问题,后期迭代几个版本后,我会不断扩充完善包仓库。