更加智能化构建第三方库,Xmake v2.7.2 发布

科技资讯 投稿 29800 0 评论

更加智能化构建第三方库,Xmake v2.7.2 发布

Xmake 是一个基于 Lua 的轻量级跨平台构建工具。

它非常的轻量,没有任何依赖,因为它内置了 Lua 运行时。

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

我们能够使用它像 Make/Ninja 那样可以直接编译项目,也可以像 CMake/Meson 那样生成工程文件,另外它还有内置的包管理系统来帮助用户解决 C/C++ 依赖库的集成使用问题。

目前,Xmake 主要用于 C/C++ 项目的构建,但是同时也支持其他 native 语言的构建,可以实现跟 C/C++ 进行混合编译,同时编译速度也是非常的快,可以跟 Ninja 持平。

Xmake = Build backend + Project Generator + Package Manager + [Remote|Distributed] Build + Cache

尽管不是很准确,但我们还是可以把 Xmake 按下面的方式来理解:

Xmake ~= Make/Ninja + CMake/Meson + Vcpkg/Conan + distcc + ccache/sccache

新特性介绍

更加智能化构建第三方库

在先前的版本中,Xmake 提供了一种 TryBuild 模式,可以在没有 xmake.lua 的情况下,使用 Xmake 尝试对 autoconf/cmake/meson 等维护的第三方项目进行直接构建。

其实,也就是让 Xmake 检测到对应的构建系统后,调用 cmake 等命令来实现,但是会帮助用户简化配置操作,另外还能对接 xmake 的交叉编译工具链配置。

但是,这种模式有一定的失败率,比如以下一些情况,都会可能导致构建失败:

  1. 项目代码自身存在缺陷,导致编译错误

  2. 项目代码不支持当前平台

  3. 构建脚本存在缺陷

  4. 缺少特定的配置参数

  5. 缺少依赖库,需要用户手动安装

  6. 编译器版本太低,不支持部分代码

而 TryBuild 模式通常处理这些情况,但是在新版本中,我们对 TryBuild 模式引入了一种新的机制,通过复用 xmake-repo 仓库中的构建脚本,来改进构建逻辑。

它大概得处理流程是这样子的:

  1. 在第三方源码库目录执行 xmake 命令

  2. Xmake 获取目录名,尝试解析项目名和版本

  3. 尝试从 xmake-repo 仓库匹配现有的包

  4. 如果匹配成功,直接采用包中构建逻辑来构建

  5. 如果没匹配成功,回退到原来的 TryBuild 逻辑

这能带来什么好处呢,如果匹配成功,我们能够解决上面提到的各种问题。

即使当前项目源码不支持指定平台,或者源码和构建脚本存在一定的缺陷,Xmake 也能自动打入特定 patch 去修复它,并引入需要的依赖包,确保它肯定能够一键编译通过。

我们使用 libjpeg 库为例,来直观的感受下。

编程笔记 » 更加智能化构建第三方库,Xmake v2.7.2 发布

赞同 (48) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽