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
![](https://github.com/xmake-io/xmake-docs/raw/master/assets/img/index/package.gif)
新特性介绍
Windows 长路径问题改进
windows 的长路径限制一直是一个大问题,嵌套层级太深的工程,在读写文件的时候,都有可能失败,这会影响 xmake 的可用性和体验。
尽管,xmake 已经提供各种措施也避免这个问题,但是偶尔还是会受到一些限制。而在这个版本中,我们改进了安装器,提供一个安装选项,让用户选择性开启长路径支持。
这需要管理员权限,因为它需要写注册表。
WriteRegDWORD ${HKLM} "SYSTEM\CurrentControlSet\Control\FileSystem" "LongPathsEnabled" 1
用户可以自己决定,是否需要开启它。
感谢 @A2va 的贡献。
zypper 包管理器支持
新增 OpenSUSE 的 zypper 包管理器支持,可以直接通过 zypper 自动下载安装,并集成它提供的包。
感谢 @iphelf 的贡献。
add_requires("zypper::libsfml2 2.5")
改进 msbuild 包安装
一些第三方包,没有使用 cmake 维护,仅仅提供了 vcproj 的工程文件,如果我们把它做成包,需要使用 tools.msbuild
模块去编译安装它。
但是 vcproj 的 vs 版本如果很老,就需要升级它,否则编译会失败。
因此我们改进了 tools.msbuild 模块,提供自动升级 vcproj 的功能,只