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
新版本改动
这个版本主要新增两大特性:
- Linux 内核驱动模块的构建支持
- 分组构建和批量运行支持,可用于实现
Run all tests功能
剩下的主要是一些零散的功能改进和 Bugs 修复,可以看下文末的更新内容明细,一些比较大的改动,下面也会逐一说明。
新特性介绍
构建 Linux 内核驱动模块
Xmake 也许是首个提供 Linux 内核驱动开发 内置支持的第三方构建工具了。
尽管网上也有介绍 CMake 如何去配置构建 linux 驱动,但是大都是通过 add_custom_command 方式自定义各种命令,然后执行 echo 去自己拼接生成 Linux 的 Makefile 文件。
也就是说,其实还是依赖 Linux 内核源码的 Makefile 来执行的构建,因此如果想自己追加一些编译配置和宏定义都会非常麻烦。
而使用 Xmake,我们可以提供更加灵活的可配置性,更加简单的配置文件,以及一键编译、自动依赖拉取集成、Linux kernel 源码自动下载集成,内核驱动交叉编译等特性。
Hello World
我们通过一个最简单的字符驱动来直观感受下。
首先,我们准备一个 Hello World 驱动代码,例如:
add_requires("linux-headers", {
configs = {
driver_modules = true}})
target("hello")
add_rules("platform.linux.driver")
add_files("src/*.c")
add_packages("linux-headers")
set_license("GPL-2.0")
它的配置非常简单,只需要配置上支持模块的 linux-headers 包,然后应用 platform.linux.driver 构建规则就行了。
然后直接执行 xmake 命令,一键编译,生成内核驱动模块 hello.ko。
$ xmake
[ 20%]: ccache compiling.release src/add.c
[ 20%]: ccache compiling.release src/hello.c
[ 60%]: linking.release build/linux/x86_64/release/hello.ko
[100%]: build ok!
简单么,也许你会说,这跟直接用 Makefile 配置,然后 make 编译也没啥太大区别么。
那么重点来了,Xmake 是会自动帮你拉取指定版本依赖内核源码,make 不会,CMake 也不会,用户必须通过 sudo apt install linux-headers-generic 自己安装它们。
但是 Xmake 不需要,上面的一键编译,我其实省略了部分输出,实际上是这样的。
$ xmake
note: install or modify (m) these packages (pass -y to skip confirm)?
in xmake-repo:
-> m4 1.4.19 [from:linux-headers,bison,flex,elfutils]
-> flex 2.6.4 [from:bc,linux-headers]
-> bison 3.8.2 [from:bc,linux-headers]
-> ed 1.17 [from:bc,linux-headers]
-> texinfo 6.7 [from:bc,linux-headers]
-> bc 1.07.1 [from:linux-headers]
-> pkg-config 0.29.2 [from:linux-headers]
-> openssl 1.1.1l [private, from:linux-headers]
-> elfutils 0.183 [private, from:linux-headers]
-> linux-headers 5.10.46 [driver_modules:y]
please input: y (y/n/m)
=> download https://github.com/xmake-mirror/ed/archive/refs/tags/1.17.tar.gz .. ok
=> install ed 1.17 .. ok
=> download https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.xz .. ok
=> download https://ftp.gnu.org/gnu/texinfo/texinfo-6.7.tar.xz .. ok
=> download https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz .. ok
=> download https://github.com/openssl/openssl/archive/OpenSSL_1_1_1l.zip .. ok
=> install m4 1.4.19 .. ok
=> download https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz .. ok
=> install texinfo 6.7 .. ok
=> install pkg-config 0.29.2 .. ok
=> download http://ftp.gnu.org/gnu/bison/bison-3.8.2.tar.gz .. ok
=> install flex 2.6.4 .. ok
=> download https://sourceware.org/elfutils/ftp/0.183/elfutils-0.183.tar.bz2 .. ok
=

Xmake v2.6.2 引入了对 Linux 内核驱动模块的构建支持,包括 Hello World 示例、指定内核版本和交叉编译。此外,新版本还增加了分组批量构建和运行功能,改进了 CMake 包的查找和集成。xmake-idea 插件也进行了更新,修复了兼容性问题。
221

被折叠的 条评论
为什么被折叠?



