xmake v2.5.4 发布,支持 apt/portage 包管理器

栏目: 软件资讯 · 发布时间: 2年前

内容简介:xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的...

xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能快速入门,能够让用户把更多的精力集中在实际的项目开发上。

在 2.5.4 版本中,我们新增了对 Apt、Portage 这两个包管理器的支持,在 Ubuntu/Gentoo 上我们也可以使用 add_requires 可以快速集成它们提供的包。

并且我们也改进支持了 Vcpkg 包管理器的支持,新增对 arm/arm64 架构包的安装支持。

另外,我们还增强了 xrepo env shell 环境,可以通过在 xmake.lua 中配置一系列 add_requires 包配置,加载带有特定包配置的 shell 环境。

新特性介绍

新的包管理器支持

添加 ubuntu/apt 的依赖包

现在我们支持使用 apt 集成依赖包,也会自动查找 ubuntu 系统上已经安装的包。

add_requires("apt::zlib1g-dev", {alias = "zlib"})

target("test")
    set_kind("binary")
    add_files("src/*.c")
    add_packages("zlib")

添加 gentoo/portage 的依赖包

我们也支持了使用 Portage 集成依赖包,并且也会自动查找 Gentoo 系统上已经安装的包。

add_requires("portage::libhandy", {alias = "libhandy"})

target("test")
    set_kind("binary")
    add_files("src/*.c")
    add_packages("libhandy")

从 Vcpkg 集成 arm/arm64 架构包

add_requires("vcpkg::zlib", {alias = "zlib"})

target("test")
    set_kind("binary")
    add_files("src/*.c")
    add_packages("zlib")

配置方式还是跟之前的相同,只需要切换到 arm/arm64 架构编译就可以自动从 Vcpkg 拉取 arm/arm64 的包。

$ xmake f -a arm64
$ xmake

支持导入导出安装包

通常,我们使用 xrepo 命令或者 xmake 去安装完包后,如果相同的项目迁移到其他机器编译,那就要重新下载安装包。

为了提高开发效率,现在 xrepo 可以快速导出已经安装后的包,包括对应的库文件,头文件等等。

$ xrepo export -o /tmp/output zlib

然后我们也可以在其他机器上导入之前导出的安装包,实现包的迁移。

$ xrepo import -i /xxx/packagedir zlib

导入后,对应项目编译会直接使用它们,不再额外重新安装包。

特定包 shell 环境支持

xrepo 有个 xrepo env 命令,可以指定加载特定包的环境,然后运行特定程序,例如加载 luajit 包的安装环境,然后运行 luajit:

$ xrepo env luajit

或者绑定特定 luajit 版本包环境,加载 bash 后,就可以直接运行对应的 lujit。

$ xrepo env -b "luajit 5.1" bash
> luajit --version

但是,这样有个问题,如果我们安装的包很多,不同的包配置和版本都还不同,如果我们想加载一个 bash,并且同时带有多个包的环境。

那么,之前的方式就无法支持了,因此,新版本中,我们对其进一步改进,是的可以通过在当前目录下,添加 xmake.lua 文件,定制化一些包配置,然后进入特定的包 shell 环境。

xmake.lua

add_requires("zlib 1.2.11")
add_requires("python 3.x", "luajit")

比如上面这样,我们通过在 xmake.lua 中配置了三个包,想在 shell 中同时使用它们,那么只需要在当前目录下运行下面的命令就行了。

$ xrepo env shell
> python --version
> luajit --version

需要注意的是,这里我们使用了 xrepo env shell 而不是 xrepo env bash,是因为 bash 只能在特定平台使用,而 xrepo env shell 属于内置命令。

它可以自动检测当前用的终端环境,加载对应的 bash, sh, zsh 以及 windows 下的 cmd 或者 powershell 环境,这一切都是自动的。

另外,我们还加了一些辅助特性,比如 prompt 提示,xrepo env quit 环境退出命令,历史输入命令切换等等。

设置镜像加速包下载

为了改进国内网络环境下载包慢的问题,xmake 是支持代理设置的,还可以支持 pac.lua 代理配置策略。

而新版本中,我们对 pac.lua 配置进行了改进,进一步支持配置镜像代理规则,比如对所有 github.com 域名的访问切到 hub.fastgit.org 域名,实现加速下载包。

pac.lua 配置:

function mirror(url)
     return url:gsub("github.com", "hub.fastgit.org")
end

然后我们设置次 pac.lua 文件,默认路径在 ~/.xmake/pac.lua

$ xmake g --proxy_pac=/tmp/pac.lua

然后,我们安装包的时候,如果遇到 github.com 域名下的包源,下载时候会自动切到 fastgit 镜像加速下载。

$ xrepo install libpng
> curl https://hub.fastgit.org/glennrp/libpng/archive/v1.6.37.zip -o v1.6.37.zip

自定义切换包存储目录

之前我们只能通过 xmake g --pkg_installdir=/tmp/xx 来配置修改默认的包安装目录。

现在,我们也可以通过 XMAKE_PKG_INSTALLDIR 环境变量也修改它,默认路径在:~/.xmake/packages

另外,我们还额外添加了 XMAKE_PKG_CACHEDIR 环境变量来修改包的缓存目录,默认路径在:~/.xmake/cache/packages

更新内容

新特性

  • #1323: 支持从 apt 查找安装包,add_requires("apt::zlib1g-dev")
  • #1337: 添加环境变量去改进包安装和缓存目录
  • #1338: 支持导入导出已安装的包
  • #1087: 添加 xrepo env shell 并且支持从 add_requires/xmake.lua 加载包环境
  • #1313: 为 add_requires/add_deps 添加私有包支持
  • #1358: 支持设置镜像 url 站点加速包下载
  • #1369: 为 vcpkg 增加 arm/arm64 包集成支持,感谢 @fallending
  • #1405: 添加 portage 包管理器支持,感谢 @Phate6660

改进

  • 改进 find_package 并且添加 package:find_package 接口在包定义中方便查找包
  • 移除废弃的 set_config_h 和 set_config_h_prefix 接口
  • #1343: 改进搜索本地包文件
  • #1347: 针对 binary 包改进 vs_runtime 配置
  • #1353: 改进 del_files() 去加速匹配文件
  • #1349: 改进 xrepo env shell 支持,更好的支持 powershell

Bugs 修复

  • #1380: 修复 add_packages() 失败问题
  • #1381: 修复添加本地 git 包源问题
  • #1391: 修复 cuda/nvcc 工具链

以上所述就是小编给大家介绍的《xmake v2.5.4 发布,支持 apt/portage 包管理器》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript DOM高级程序设计

JavaScript DOM高级程序设计

Jeffrey Sambells、Aaron Gustafson / 李松峰、李雅雯 / 人民邮电出版社 / 2008-7 / 59.00元

本书注重理论与实践的结合,全面讲述高级的DOM 脚本编程。全书分为3 个部分:第一部分“深入理解DOM 脚本编程”,涉及W3C DOM 规范的各方面,包括非标准的浏览器支持和不支持的内容;第二部分“浏览器外部通信”,以Ajax 和客户端—服务器端通信为主题;第三部分“部分高级脚本编程资源”,集中介绍了一批第三方脚本编程资源,包括库和API。同时,每部分的最后一章都为案例研究,将学到的内容应用于实践......一起来看看 《JavaScript DOM高级程序设计》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具