Xmake是基于Lua语言的跨平台构建工具,具有轻量级、无依赖、易读易写的配置文件(xmake.lua),集构建后端、项目生成器、包管理器、远程/分布式编译与缓存于一体。其功能涵盖直接编译源码(类似Make/Ninja)、生成项目文件(类CMake/Meson)、管理C/C++依赖,同时支持多种编译器和工具链。
主要特点如下:
- 快速、灵活的配置语法。
- 支持快速安装,无需额外依赖。
- 支持几乎所有主流操作系统与CPU架构(Windows、macOS、Linux、BSD系列、Android、iOS、Wasm、Haiku、Harmony等)。
- 支持主流工具链(如Xcode、MSVC、Clang、GCC、Go、Rust、Dlang、Swift等)。
- 支持多种编程语言(C/C++、Objective-C、Swift、Assembly、Go、Rust、Fortran、CUDA、Zig、Pascal、Nim、Verilog、Kotlin、C#等)。
- 智能分析交叉编译工具链信息,支持交叉编译。
- 优异的并行编译速度,增量编译支持,自动分析头文件。
- 内置包管理系统(与xrepo集成),支持从官方、第三方(Vcpkg、Conan、Conda、Homebrew等)仓库自动下载、构建和集成依赖包。
- 支持自主搭建私有包仓库、虚拟环境、依赖版本锁定、远程工具链自动拉取。
- 丰富插件系统,支持IDE项目文件生成(如VS、CMake、Ninja等),以及自定义Lua脚本插件。
- 支持REPL互动执行、丰富的扩展模块、远程与分布式编译、缓存加速。
- 对C++20模块、混合多语言项目有原生支持。
- 支持多项目类型,如静态/动态库、控制台应用、CUDA/Qt程序、驱动、Darwin应用、SWIG模块、Protobuf、Lex/Yacc、内核模块等。
典型xmake.lua配置示例:
target("console")
set_kind("binary")
add_files("src/*.c")
add_requires("tbox 1.6.*", "zlib", "libpng ~1.6")
add_requires("vcpkg::ffmpeg", "conan::openssl/1.1.1g")
add_packages("ffmpeg", "openssl")
add_requires("llvm 10.x", {alias = "llvm-10"})
set_toolchains("llvm@llvm-10")
target("test")
after_build(function (target)
print("hello: %s", target:name())
os.exec("echo %s", target:targetfile())
end)
命令行操作便捷,支持构建、运行、调试、配置平台与架构等:
xmake
xmake run
xmake f -p [平台] -a [架构] -m [debug|release]
包管理相关特性:
- 官方仓库提供500+包,支持所有平台和交叉编译,包虚拟环境(xrepo env shell)、Windows预编译包加速、自建和私有仓库、第三方仓库集成、依赖版本锁定与工具链拉取支持。
分布式与远程编译:
- 支持MSVC、Clang、GCC等,支持各主机间编译,无需共享文件系统,自动负载均衡和实时压缩大文件传输,几乎零配置,无额外依赖。
性能方面:
- 并行编译速度可与Ninja媲美,增量单任务编译亦优于CMake+Make/Ninja。
IDE/编辑器集成:
- 提供Visual Studio、Vscode、Sublime、IntelliJ IDEA、Zed、Vim、QtCreator等支持插件。
- Gradle集成可用于Android JNI项目的自动编译任务。
CI集成:
- GitHub Actions插件便于CI流程使用Xmake。
社区与联系方式:
- 官方网站 xmake.io,源码托管于GitHub/Gitee,交流群覆盖Reddit、Telegram、Discord、QQ等,提供邮件和微信公众号。
贡献与支持: