v2.9.7 
新特性 
- #5813: 为 rule 添加 
before_config和after_config - #5848: 支持自定义 MSVC 构建工具, PortableBuildTools 和 msvc-wine
 - #5880: 支持使用 msvc 包去构建工程
 - #5884: 为包添加自定义安装提示
 - #5894: 添加 package.merge_staticlibs 策略去合并包安装的静态库
 - #5948: 添加 
lua.native-object规则 - #5911: 支持 nuget 包集成
 
改进 
Bugs 修复 
v2.9.6 
新特性 
- #5527: 添加 
set_policy("compatibility.version", "3.0")提前预览体验 3.0 特性 - #5649: 添加 
package.check_fcsnippets 
改进 
- #5631: 为 
add_linkgroups添加as_needed - #5702: 改进 hash 模块
 - #5688: 改进 hashset
 - #5711: 为 sdcc 支持解析 include 依赖
 - #5727: 为 add_requires 改进 configs 配置
 - #5762: 改进 bin2c 速度
 
Bugs 修复 
v2.9.5 
新特性 
- #5462: 添加 
xmake l cli.bisect - #5488: 支持使用 cosmocc 去构建 xmake 自身二进制
 - #5491: 支持提供内嵌 lua 文件的单个 xmake 二进制文件
 - #5580: 添加 
@builtin/xrepo辅助模块,为xrepo env shell实现快速设置环境变量 
改进 
- #5507: 改进 git clone 下载速度
 - #5536: 在 swig 模式中添加 jar 生成支持
 - #5573: 改进 vsxmake generator 性能
 - #5601: 改进 utils.symbols.export_all 规则去过滤源文件路径
 
Bugs 修复 
- #4750: 修复 compile_commands 生成器,支持 
xmake tests - #5465: 修复 package requires lock
 - #4760: 修复 distcc 分布式编译问题
 
v2.9.4 
新特性 
- #5278: 添加 
build.intermediate_directory策略去禁用中间目录生成 - #5313: 添加 windows arm/arm64ec 支持
 - #5296: 添加 Intel LLVM Fortran 编译器支持
 - #5384: 为包添加 
add_bindirs配置支持 
改进 
- #5280: 添加缺失的 C++20 Modules 文件扩展
 - #5251: 为 windows installer 更新内置的 7z/curl
 - #5286: 改进 json 支持16进制解析
 - #5302: 改进 Vala 支持
 - #5335: 改进 
xmake install和xpack,添加set_prefixdir接口 - #5387: 改进 
xmake test - #5376: 改进 C++ module 对象列表处理和 moduleonly 包支持
 
Bugs 修复 
- #5288: 修复 
xmake test对 Unity Build 的支持 - #5270: 修复 gcc/clang 对 pch 的支持
 - #5276: 修复查找 vc6 环境
 - #5259: 修复命令补全失效问题
 
v2.9.3 
新特性 
改进 
- #5156: 改进安装 cargo 包
 
问题修复 
- #5176: 修复 VS toolset v144 支持
 
v2.9.2 
新特性 
- #5005: 显示所有 API
 - #5003: 添加 build.fence 策略
 - #5060: 支持 Verilator 静态库目标构建
 - #5074: 添加 
xrepo download命令去快速下载包源码 - #5086: 添加包检测支持
 - #5103: 添加 qt ts 构建支持
 - #5104: 改进 find_program,在 windows 上调用 where 改进查找
 
改进 
- #5077: 当构建 x86 目标时,使用 x64 的 msvc 编译工具
 - #5109: 改进 add_rpathdirs 支持 runpath/rpath 切换
 - #5132: 改进 ifort/icc/icx 在 windows 上的支持
 
Bugs 修复 
v2.9.1 
新特性 
改进 
- 改进包管理,支持切换 clang-cl
 - #4893: 改进 rc 头文件依赖检测
 - #4928: 改进构建和链接速度,增量编译时候效果更加明显
 - #4931: 更新 pdcurses
 - #4973: 改进选择脚本的匹配模式
 
Bugs 修复 
v2.8.9 
新特性 
- #4843: 添加 check_bigendian 接口实现大小端探测
 
改进 
- #4798: 改进 wasi sdk 检测
 - #4772: 改进 tools.cmake 去兼容支持 vs2022 preview (v144)
 - #4813: 添加 gb2312 编码
 - #4864: 改进抽取符号,支持 gdb 断点调试
 - #4831: 改进 target:fileconfig() 支持 headerfiles
 - #4846: 改进进度显示,解决顺序错乱问题
 
Bugs 修复 
v2.8.8 
改进 
- 添加 
package:check_sizeof() 
Bugs 修复 
v2.8.7 
新特性 
- #4544: 改进 
xmake test,支持等待进程超时 - #4606: 为 package 添加 
add_versionfiles接口 - #4709: 添加 cosmocc 工具链支持
 - #4715: 在描述域添加 is_cross() 接口
 - #4747: 添加 
build.always_update_configfiles策略 
改进 
- #4575: 检测无效的域参数
 - 添加更多的 loong64 支持
 - 改进 dlang/dmd 对 frameworks 的支持
 - #4571: 改进 
xmake test的输出支持 - #4609: 改进探测 vs 构建工具环境
 - #4614: 改进支持 android ndk 26b
 - #4473: 默认启用警告输出
 - #4477: 改进 runtimes 去支持 libc++/libstdc++
 - #4657: 改进脚本的模式匹配
 - #4673: 重构模块支持
 - #4746: 为 cmake generator 添加原生 c++ modules 支持
 
Bugs 修复 
v2.8.6 
新特性 
- 添加 
network.mode策略 - #1433: 添加 
xmake pack命令去生成 NSIS/zip/tar.gz/rpm/srpm/runself 安装包 - #4435: 为 UnityBuild 的组模式增加 batchsize 支持
 - #4485: 新增 package.install_locally 策略支持
 - 新增 NetBSD 支持
 
Changes 
- #4484: 改进 swig 规则
 - 改进 Haiku 支持
 
Bugs 修复 
v2.8.5 
新特性 
- #1452: 支持链接顺序调整,链接组
 - #1438: 支持代码 amalgamation
 - #3381: 添加 
xmake test支持 - #4276: 支持自定义域 API
 - #4286: 添加 Apple XROS 支持
 - #4345: 支持检测类型大小 sizeof
 - #4369: 添加 windows.manifest.uac 策略
 
改进 
- #4284: 改进内置 includes 模块
 
Bugs 修复 
- #4256: 为 vsxmake 生成器修复 c++ modules intellisense
 
v2.8.3 
新特性 
- #4122: 支持 Lua 调试 (EmmyLua)
 - #4132: 支持 cppfront
 - #4147: 添加 hlsl2spv 规则
 - 添加 lib.lua.package 模块
 - #4226: 新增 asan 相关策略和对包的支持
 - 添加 
run.autobuild策略开启运行前自动构建 - 添加全局策略 
xmake g --policies= 
改进 
- #4119: 改进支持 emcc 工具链和 emscripten 包的整合
 - #4154: 添加 
xmake -r --shallow target去改进重建目标,避免重建所有依赖目标 - 添加全局 ccache 存储目录
 - #4137: 改进 Qt,支持 Qt6 for Wasm
 - #4173: 添加 recheck 参数到 on_config
 - #4200: 改进远程构建,支持调试本地 xmake 源码
 - #4209: 添加 extra 和 pedantic 警告
 
Bugs 修复 
- #4110: 修复 extrafiles
 - #4115: 修复 compile_commands 生成器
 - #4199: 修复 compile_commands 生成器对 c++ modules 的支持
 - 修复 os.mv 在 windows 上跨驱动盘失败问题
 - #4214: 修复 rust workspace 构建问题
 
v2.8.2 
新特性 
- #4002: 增加 soname 支持
 - #1613: 为 add_vectorexts 增加 avx512 和 sse4.2 支持
 - #2471: 添加 set_encodings API 去设置源文件和目标文件的编码
 - #4071: 支持 sdcc 的 stm8 汇编器
 - #4101: 为 c/c++ 添加 force includes
 - #2384: 为 vs/vsxmake 生成器添加 add_extrafiles 接口
 
改进 
- #3960: 改进 msys2/crt64 支持
 - #4032: 移除一些非常老的废弃接口
 - 改进 tools.msbuild 升级 vcproj 文件
 - 支持 add_requires("xmake::xxx") 包
 - #4049: 改进 Rust 支持交叉编译
 - 改进 clang 下 c++ modules 支持
 
Bugs 修复 
- 修复 macOS/Linux 上子子进程无法快速退出问题
 
v2.8.1 
新特性 
- #3821: windows 安装器添加长路径支持选项
 - #3828: 添加 zypper 包管理器支持
 - #3871: 改进 tools.msbuild 支持对 vsproj 进行自动升级
 - #3148: 改进 protobuf 支持 grpc
 - #3889: add_links 支持库路径添加
 - #3912: 添加 set_pmxxheader 去支持 objc 预编译头
 - add_links 支持库文件路径
 
改进 
- #3752: 改进 windows 上 os.getenvs 的获取
 - #3371: 改进 tools.cmake 支持使用 ninja 去构建 wasm 包
 - #3777: 改进从 pkg-config 中查找包
 - #3815: 改进 tools.xmake 支持为 windows 平台传递工具链
 - #3857: 改进生成 compile_commands.json
 - #3892: 改进包搜索,支持从描述中找包
 - #3916: 改进构建 swift 程序,支持模块间符号调用
 - 更新 lua 运行时到 5.4.6
 
Bugs 修复 
- #3755: 修复 find_tool 从 xmake/packages 中查找程序
 - #3787: 修复从 conan 2.x 中使用包
 - #3839: 修复 conan 2.x 包的 vs_runtime 设置
 
v2.7.9 
新特性 
改进 
- #3669: 改进 cmake 生成器支持特定工具的 cxflags
 - #3679: 改进 
xrepo clean - #3662: 改进 cmake/make 生成器去更好的支持 lex/yacc 工程
 - #3697: 改进 trybuild/cmake
 - #3730: 改进 c++modules 包安装,解决不同目录同名文件分发冲突问题
 
Bugs 修复 
- #3596: 修复 check_cxxfuncs 和 check_cxxsnippets
 - #3603: 修复 xmake update 的无效 url
 - #3614: 修复 xmake run 对 Qt 环境的加载
 - #3628: 修复 msys2/mingw 下 os.exec 总是优先查找错误的可执行程序
 - 修复 msys/mingw 下环境变量设置问题
 
v2.7.8 
新特性 
改进 
- #3433: 改进 QT 在 msys2/mingw64 和 wasm 上的构建支持
 - #3419: 支持 fish shell 环境
 - #3455: Dlang 增量编译支持
 - #3498: 改进绑定包虚拟环境
 - #3504: 添加 swig java 支持
 - #3508: 改进 trybuild/cmake 去支持工具链切换
 - 为 msvc 禁用 build cache 加速,因为 msvc 的预处理器太慢,反而极大影响构建性能。
 
Bugs 修复 
v2.7.7 
新特性 
改进 
- #3318: 改进 dlang 工具链
 - #2591: 改进 target 配置来源分析
 - 为 dmd/ldc2 改进 strip/optimization
 - #3342: 改进配置构建目录,支持外置目录构建,保持远吗目录更加干净
 - #3373: 为 clang-17 改进 std 模块支持
 
Bugs 修复 
v2.7.6 
新特性 
- #3228: C++ modules 的安装发布,以及从包中导入 C++ modules 支持
 - #3257: 增加对 iverilog 和 verilator 的支持
 - 支持 xp 和 vc6.0
 - #3214: xrepo install 的自动补全支持
 
改进 
- #3255: 改进 clang libc++ 模块支持
 - 支持使用 mingw 编译 xmake
 - 改进 xmake 在 win xp 上的兼容性
 - 如果外部依赖被启用,切换 json 模块到纯 lua 实现,移除对 lua-cjson 的依赖
 
Bugs 修复 
- #3229: 修复 vs2015 下找不到 rc.exe 问题
 - #3271: 修复支持带有空格的宏定义
 - #3273: 修复 nim 链接错误
 - #3286: 修复 compile_commands 对 clangd 的支持
 
v2.7.5 
新特性 
改进 
- #3216: 改进 intel one api toolkits 探测
 - #3020: 添加 
--lsp=clangd去改进 compile_commands.json 的生成 - #3215: 添加 includedirs 和 defines 到 c51 编译器
 - #3251: 改进 zig and c 混合编译
 
Bugs 修复 
- #3203: 修复 compile_commands
 - #3222: 修复 objc 的预编译头支持
 - #3240: 修复 
xmake run处理单个参数不正确问题 - #3238: 修复 clang 构建 module 时候,并行写入 mapper 冲突问题
 
v2.7.4 
新特性 
- #3049: 添加 
xmake format插件 - 添加 
plugin.compile_commands.autoupdate规则 - #3172: 添加 xmake.sh
 - #3168: 为 msvc 添加 C++23 标准模块支持
 
改进 
- #3056: 改进 Zig 支持
 - #3060: 改进支持 msys2 的环境探测
 - #3071: 为 llvm/clang 工具链支持 rc 编译
 - #3122: 改进 c++20 模块依赖图的源码分析,支持预处理
 - #3125: 增加私有 C++20 模块的编译支持
 - #3133: 增加 internal partitions 模块支持
 - #3146: 添加默认包组件支持
 - #3192: 为 auto complete 增加 json 输出支持
 
Bugs 修复 
- 修复 requires-lock 问题
 - #3065: 修复部分依赖包没有被安装的问题
 - #3082: 修复 build.ninja 生成器
 - #3092: 修复 xrepo add-repo 添加失败逻辑
 - #3013: 修复支持 windows UNC 路径
 - #2902: 修复文件被其他子进程占用问题
 - #3074: 修复 CMakelists 生成器链接参数设置不对问题
 - #3141: 修复 C++ 模块的导入顺序
 - 修复 tools/xmake 包安装构建目录
 - #3159: 为 CLion 修复 compile_commands
 
v2.7.3 
新特性 
- 一种新的可选域配置语法,对 LSP 友好,并且支持域隔离。
 - #2944: 为嵌入式工程添加 
gnu-rm.binary和gnu-rm.static规则和测试工程 - #2636: 支持包组件
 - 支持 msvc 的 armasm/armasm64
 - #3023: 改进 xmake run -d,添加 renderdoc 调试器支持
 - #3022: 为特定编译器添加 flags
 - #3025: 新增 C++ 异常接口配置
 - #3017: 支持 ispc 编译器规则
 
改进 
- #2925: 改进 doxygen 插件
 - #2948: 支持 OpenBSD
 - 添加 
xmake g --insecure-ssl=y配置选项去禁用 ssl 证书检测 - #2971: 使 vs/vsxmake 工程生成的结果每次保持一致
 - #3000: 改进 C++ 模块构建支持,实现增量编译支持
 - #3016: 改进 clang/msvc 去更好地支持 std 模块
 
Bugs 修复 
v2.7.2 
新特性 
- #2140: 支持 Windows Arm64
 - #2719: 添加 
package.librarydeps.strict_compatibility策略严格限制包依赖兼容性 - #2810: 支持 os.execv 去执行 shell 脚本文件
 - #2817: 改进规则支持依赖顺序执行
 - #2824: 传递 cross-file 交叉编译环境给 meson.install 和 trybuild
 - #2856: xrepo 支持从当前指定源码目录调试程序
 - #2859: 改进对三方库的 trybuild 构建,利用 xmake-repo 仓库脚本更加智能化地构建三方库
 - #2879: 更好的动态创建和配置 target 和 rule
 - #2374: 允许 xmake 包中引入自定义规则
 - 添加 clang-cl 工具链
 
改进 
- #2745: 改进 os.cp 支持符号链接复制
 - #2773: 改进 vcpkg 包安装,支持 freebsd 平台
 - #2778: 改进 xrepo.env 支持 target 的运行环境加载
 - #2783: 添加摘要算法选项到 WDK 的 signtool 签名工具
 - #2787: 改进 json 支持空数组
 - #2782: 改进查找 matlib sdk 和运行时
 - #2793: 改进 mconfdialog 配置操作体验
 - #2804: 安装依赖包支持 macOS arm64/x86_64 交叉编译
 - #2809: 改进 msvc 的编译优化选项
 - 改进 trybuild 模式,为 meson/autoconf/cmake 提供更好的交叉编译支持
 - #2846: 改进对 configfiles 的生成
 - #2866: 更好地控制 rule 规则执行顺序
 
Bugs 修复 
v2.7.1 
新特性 
- #2555: 添加 fwatcher 模块和 
xmake watch插件命令 - 添加 
xmake service --pull 'build/**' outputdir命令去拉取远程构建服务器上的文件 - #2641: 改进 C++20 模块, 支持 headerunits 和 project 生成
 - #2679: 支持 Mac Catalyst 构建
 
改进 
- #2576: 改进从 cmake 中查找包,提供更过灵活的可选配置
 - #2577: 改进 add_headerfiles(),增加 
{install = false}支持 - #2603: 为 ccache 默认禁用 
-fdirectives-only - #2580: 设置 stdout 到 line 缓冲输出
 - #2571: 改进分布式编译的调度算法,增加 cpu/memory 状态权重
 - #2410: 改进 cmakelists 生成
 - #2690: 改机传递 toolchains 到包
 - #2686: 改进 armcc/armclang 支持增量编译
 - #2562: 改进 rc.exe 对引用文件依赖的解析和增量编译支持
 - 改进默认的并行构建任务数
 
Bugs 修复 
- #2614: 为 msvc 修复构建 submodules2 测试工程
 - #2620: 修复构建缓存导致的增量编译问题
 - #2177: 修复 python.library 在 macOS 上段错误崩溃
 - #2708: 修复 mode.coverage 规则的链接错误
 - 修复 ios/macOS framework 和 application 的 rpath 加载路径
 
v2.6.9 
新特性 
改进 
- 改进 tools.cmake 支持 wasm 库构建
 - #2491: 如果服务器不可访问,自动回退到本地编译和缓存
 - #2514: 为工程生成器禁用 Unity Build
 - #2473: 改进 apt::find_package,支持从 pc 文件中查找
 - #2512: 改进远程服务支持超时配置
 
Bugs 修复 
- #2488: 修复从 windows 到 linux 的远程编译路径问题
 - #2504: 修复在 msys2 上远程编译失败问题
 - #2525: 修复安装依赖包时候卡死问题
 - #2557: 修复 cmake.find_package 查找 links 错误
 - 修复缓存导致的预处理文件路径冲突问题
 
v2.6.8 
新特性 
- #2447: 添加 qt.qmlplugin 规则和 qmltypesregistrar 支持
 - #2446: 支持 target 分组安装
 - #2469: 产生 vcpkg-configuration.json
 
改进 
- 添加 
preprocessor.linemarkers策略去禁用 linemarkers 去加速 ccache/distcc - #2389: 改进 
xmake run支持并行运行目标程序 - #2417: 切换 option/showmenu 的默认值,默认开启
 - #2440: 改进安装包的失败错误信息
 - #2438: 确保生成的 vsxmake 工程不会随机变动
 - #2434: 改进插件管理器,允许多插件管理
 - #2421: 改进配置选项菜单
 - #2425: 添加 
preprocessor.gcc.directives_only策略 - #2455: 改进 emcc 的优化选项
 - #2467: 支持回退到原始文件编译,兼容 msvc 预处理器的一些问题
 - #2452: 添加 build.warning 策略
 
Bugs 修复 
v2.6.7 
新特性 
- #2318: 添加 
xmake f --policies=配置参数去修改默认策略 
改进 
- 如果预编译包构建失败,自动回退到源码包构建
 - #2387: 改进 pkgconfig 和 find_package
 - 添加 
build.ccache策略,用于在工程中配置编译缓存 
Bugs 修复 
v2.6.6 
新特性 
- #2327: 支持 nvidia-hpc-sdk 工具链中的 nvc/nvc++/nvfortran 编译器
 - 添加 path 实例接口
 - #2344: 添加 lz4 压缩模块
 - #2349: 添加 keil/c51 工程支持
 - #274: 跨平台分布式编译支持
 - 使用内置的本地缓存替代 ccache
 
改进 
- #2309: 远程编译支持用户授权验证
 - 改进远程编译,增加对 lz4 压缩支持
 
Bugs 修复 
- 修复选择包版本时候 lua 栈不平衡导致的崩溃问题
 
v2.6.5 
新特性 
- #2138: 支持模板包
 - #2185: 添加 
--appledev=simulator去改进 Apple 模拟器目标编译支持 - #2227: 改进 cargo 包,支持指定 Cargo.toml 文件
 - 改进 
add_requires支持 git command 作为版本 - #622: 支持远程编译
 - #2282: 添加 
add_filegroups接口为 vs/vsxmake/cmake generator 增加文件组支持 
改进 
- #2137: 改进 path 模块
 - macOS 下,减少 50% 的 Xmake 二进制文件大小
 - 改进 tools/autoconf,cmake 去更好地支持工具链切换
 - #2221: 改进注册表 api 去支持 unicode
 - #2225: 增加对 protobuf 的依赖分析和构建支持
 - #2265: 排序 CMakeLists.txt
 - 改进 os.files 的文件遍历速度
 
Bugs 修复 
- #2233: 修复 c++ modules 依赖
 
v2.6.4 
新特性 
- #2011: 支持继承和局部修改官方包,例如对现有的包更换 urls 和 versions
 - 支持在 sparc, alpha, powerpc, s390x 和 sh4 上编译运行 xmake
 - 为 package() 添加 on_download 自定义下载
 - #2021: 支持 Linux/Windows 下构建 Swift 程序
 - #2024: 添加 asn1c 支持
 - #2031: 为 add_files 增加 linker scripts 和 version scripts 支持
 - #2033: 捕获 ctrl-c 去打印当前运行栈,用于调试分析卡死问题
 - #2059: 添加 
xmake update --integrate命令去整合 shell - #2070: 添加一些内置的 xrepo env 环境配置
 - #2117: 支持为任意平台传递工具链到包
 - #2121: 支持导出指定的符号列表,可用于减少动态库的大小
 
改进 
- #2036: 改进 xrepo 支持从配置文件批量安装包,例如:
xrepo install xxx.lua - #2039: 改进 vs generator 的 filter 目录展示
 - #2025: 支持为 phony 和 headeronly 目标生成 vs 工程
 - 优化 vs 和 codesign 的探测速度
 - #2077: 改进 vs 工程生成器去支持 cuda
 
Bugs 修复 
- #2005: 修复 path.extension
 - #2008: 修复 windows manifest 文件编译
 - #2016: 修复 vs project generator 里,对象文件名冲突导致的编译失败
 
v2.6.3 
新特性 
- #1298: 支持 vcpkg 清单模式安装包,实现安装包的版本选择
 - #1896: 添加 
python.library规则去构建 pybind 模块,并且支持 soabi - #1939: 添加 
remove_files,remove_headerfiles并且标记del_files作为废弃接口 - 将 on_config 作为正式的公开接口,用于 target 和 rule
 - 添加 riscv32/64 支持
 - #1970: 添加 CMake wrapper 支持在 CMakelists 中去调用 xrepo 集成 C/C++ 包
 - 添加内置的 github 镜像加速 pac 代理文件, 
xmake g --proxy_pac=github_mirror.lua 
改进 
- #1923: 改进构建 linux 驱动,支持设置自定义 linux-headers 路径
 - #1962: 改进 armclang 工具链去支持构建 asm
 - #1959: 改进 vstudio 工程生成器
 - #1969: 添加默认的 option 描述
 
Bugs 修复 
v2.6.2 
新特性 
改进 
- #1872: 支持转义 set_configvar 中字符串值
 - #1888: 改进 windows 安装器,避免错误删除其他安装目录下的文件
 - #1895: 改进 
plugin.vsxmake.autoupdate规则 - #1893: 改进探测 icc 和 ifort 工具链
 - #1905: 改进 msvc 对 external 头文件搜索探测支持
 - #1904: 改进 vs201x 工程生成器
 - 添加 
XMAKE_THEME环境变量去切换主题配置 - #1907: 添加 
-f/--force参数使得xmake create可以在费控目录被强制创建 - #1917: 改进 find_package 和配置
 
Bugs 修复 
v2.6.1 
新特性 
- #1799: 支持混合 Rust 和 C++ 程序,以及集成 Cargo 依赖库
 - 添加 
utils.glsl2spv规则去编译 .vert/.frag shader 文件生成 spirv 文件和二进制 C 头文件 
改进 
- 默认切换到 Lua5.4 运行时
 - #1776: 改进 system::find_package,支持从环境变量中查找系统库
 - #1786: 改进 apt:find_package,支持查找 alias 包
 - #1819: 添加预编译头到 cmake 生成器
 - 改进 C++20 Modules 为 msvc 支持 std 标准库
 - #1792: 添加自定义命令到 vs 工程生成器
 - #1835: 改进 MDK 程序构建支持,增加 
set_runtimes("microlib") - #1858: 改进构建 c++20 modules,修复跨 target 构建问题
 - 添加 $XMAKE_BINARY_REPO 和 $XMAKE_MAIN_REPO 仓库设置环境变量
 - #1865: 改进 openmp 工程
 - #1845: 为静态库安装 pdb 文件
 
Bugs 修复 
- 修复语义版本中解析带有 0 前缀的 build 字符串问题
 - #50: 修复 rule 和构建 bpf 程序 bug
 - #1610: 修复 
xmake f --menu在 vscode 终端下按键无响应,并且支持 ConPTY 终端虚拟按键 
v2.5.9 
新特性 
- #1736: 支持 wasi-sdk 工具链
 - 支持 Lua 5.4 运行时
 - 添加 gcc-8, gcc-9, gcc-10, gcc-11 工具链
 - #1623: 支持 find_package 从 cmake 查找包
 - #1747: 添加 
set_kind("headeronly")更好的处理 headeronly 库的安装 - #1019: 支持 Unity build
 - #1438: 增加 
xmake l cli.amalgamate命令支持代码合并 - #1765: 支持 nim 语言
 - #1762: 为 
xrepo env管理和切换指定的环境配置 - #1767: 支持 Circle 编译器
 - #1753: 支持 Keil/MDK 的 armcc/armclang 工具链
 - #1774: 添加 table.contains api
 - #1735: 添加自定义命令到 cmake 生成器
 - #1781: 改进 get.sh 安装脚本支持 nixos
 
改进 
- #1528: 检测 c++17/20 特性
 - #1729: 改进 C++20 modules 对 clang/gcc/msvc 的支持,支持模块间依赖编译和并行优化
 - #1779: 改进 ml.exe/x86,移除内置的 
-Gd选项 
v2.5.8 
新特性 
- #388: Pascal 语言支持,可以使用 fpc 来编译 free pascal
 - #1682: 添加可选的额lua5.3 运行时替代 luajit,提供更好的平台兼容性。
 - #1622: 支持 Swig
 - #1714: 支持内置 cmake 等第三方项目的混合编译
 - #1715: 支持探测编译器语言标准特性,并且新增 
check_macros检测接口 - xmake 支持在 Loongarch 架构上运行
 
改进 
- #1618: 改进 vala 支持构建动态库和静态库程序
 - 改进 Qt 规则去支持 Qt 4.x
 - 改进 
set_symbols("debug")支持 clang/windows 生成 pdb 文件 - #1638: 改进合并静态库
 - 改进 on_load/after_load 去支持动态的添加 target deps
 - #1675: 针对 mingw 平台,重命名动态库和导入库文件名后缀
 - #1694: 支持在 set_configvar 中定义一个不带引号的字符串变量
 - 改进对 Android NDK r23 的支持
 - 为 
set_languages新增c++latest和clatest配置值 - #1720: 添加 
save_scope和restore_scope去修复check_xxx相关接口 - #1726: 改进 compile_commands 生成器去支持 nvcc
 
Bugs 修复 
v2.5.7 
新特性 
- #1534: 新增对 Vala 语言的支持
 - #1544: 添加 utils.bin2c 规则去自动从二进制资源文件产生 .h 头文件并引入到 C/C++ 代码中
 - #1547: option/snippets 支持运行检测模式,并且可以获取输出
 - #1567: 新增 xmake-requires.lock 包依赖锁定支持
 - #1597: 支持编译 metal 文件到 metallib,并改进 xcode.application 规则去生成内置的 default.metallib 到 app
 
改进 
Bugs 修复 
- #1531: 修复 targets 加载失败的错误信息提示错误
 
v2.5.6 
新特性 
- #1483: 添加 
os.joinenvs()和改进包工具环境 - #1523: 添加 
set_allowedmodes,set_allowedplats和set_allowedarchs - #1523: 添加 
set_defaultmode,set_defaultplat和set_defaultarchs 
改进 
- 改进 vs/vsxmake 工程插件支持 vs2022
 - #1513: 改进 windows 预编译包的兼容性问题
 - 改进 vcpkg 包在 windows 上的查找
 - 改进对 Qt6 的支持
 
Bugs 修复 
- #489: 修复 run os.execv 带有过长环境变量值出现的一些问题
 
v2.5.5 
新特性 
- #1421: 针对 target 目标,增加目标文件名的前缀,后缀和扩展名设置接口。
 - #1422: 支持从 vcpkg, conan 中搜索包
 - #1424: 设置 binary 作为默认的 target 目标类型
 - #1140: 支持安装时候,手动选择从第三包包管理器安装包
 - #1339: 改进 
xmake package去产生新的本地包格式,无缝集成add_requires,并且新增生成远程包支持 - 添加 
appletvos编译平台支持,xmake f -p appletvos - #1437: 为包添加 headeronly 库类型去忽略 
vs_runtime - #1351: 支持导入导出当前配置
 - #1454: 支持下载安装 windows 预编译包
 
改进 
- #1425: 改进 tools/meson 去加载 msvc 环境,并且增加一些内置配置。
 - #1442: 支持从 git url 去下载包资源文件
 - #1389: 支持添加工具链环境到 
xrepo env - #1453: 支持 protobuf 规则导出头文件搜索目录
 - 新增对 vs2022 的支持
 
Bugs 修复 
v2.5.4 
新特性 
- #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 修复 
v2.5.3 
新特性 
- #1259: 支持 
add_files("*.def")添加 def 文件去导出 windows/dll 符号 - #1267: 添加 
find_package("nvtx") - #1274: 添加 
platform.linux.bpf规则去构建 linux/bpf 程序 - #1280: 支持 fetchonly 包去扩展改进 find_package
 - 支持自动拉取远程 ndk 工具链包和集成
 - #1268: 添加 
utils.install.pkgconfig_importfiles规则去安装*.pc文件 - #1268: 添加 
utils.install.cmake_importfiles规则去安装*.cmake导入文件 - #348: 添加 
platform.longpaths策略去支持 git longpaths - #1314: 支持安装使用 conda 包
 - #1120: 添加 
core.base.cpu模块并且改进os.cpuinfo() - #1325: 为 
add_configfiles添加内建的 git 变量 
改进 
- #1275: 改进 vsxmake 生成器,支持条件化编译 targets
 - #1290: 增加对 Android ndk r22 以上版本支持
 - #1311: 为 vsxmake 工程添加包 dll 路径,确保调试运行加载正常
 
Bugs 修复 
v2.5.2 
新特性 
- #955: 支持 
zig cc和zig c++作为 c/c++ 编译器 - #955: 支持使用 zig 进行交叉编译
 - #1177: 改进终端和 color codes 探测
 - #1216: 传递自定义 includes 脚本给 xrepo
 - 添加 linuxos 内置模块获取 linux 系统信息
 - #1217: 支持当编译项目时自动拉取工具链
 - #1123: 添加 
rule("utils.symbols.export_all")自动导出所有 windows/dll 中的符号 - #1181: 添加 
utils.platform.gnu2mslib(mslib, gnulib)模块接口去转换 mingw/xxx.dll.a 到 msvc xxx.lib - #1246: 改进规则支持新的批处理命令去简化自定义规则实现
 - #1239: 添加 
add_extsources去改进外部包的查找 - #1241: 支持为 windows 程序添加 .manifest 文件参与链接
 - 支持使用 
xrepo remove --all命令去移除所有的包,并且支持模式匹配 - #1254: 支持导出包配置给父 target,实现包配置的依赖继承
 
改进 
- #1226: 添加缺失的 Qt 头文件搜索路径
 - #1183: 改进 C++ 语言标准,以便支持 Qt6
 - #1237: 为 vsxmake 插件添加 qt.ui 文件
 - 改进 vs/vsxmake 插件去支持预编译头文件和智能提示
 - #1090: 简化自定义规则
 - #1065: 改进 protobuf 规则,支持 compile_commands 生成器
 - #1249: 改进 vs/vsxmake 生成器去支持启动工程设置
 - #605: 改进 add_deps 和 add_packages 直接的导出 links 顺序
 - 移除废弃的 
add_defines_h_if_okandadd_defines_h接口 
Bugs 修复 
v2.5.1 
新特性 
- #1035: 图形配置菜单完整支持鼠标事件,并且新增滚动栏
 - #1098: 支持传递 stdin 到 os.execv 进行输入重定向
 - #1079: 为 vsxmake 插件添加工程自动更新插件,
add_rules("plugin.vsxmake.autoupdate") - 添加 
xmake f --vs_runtime='MT'和set_runtimes("MT")去更方便的对 target 和 package 进行设置 - #1032: 支持枚举注册表 keys 和 values
 - #1026: 支持对 vs/vsmake 工程增加分组设置
 - #1178: 添加 
add_requireconfs()接口去重写依赖包的配置 - #1043: 为 luarocks 模块添加 
luarocks.module构建规则 - #1190: 添加对 Apple Silicon (macOS ARM) 设备的支持
 - #1145: 支持在 windows 上安装部署 Qt 程序, 感谢 @SirLynix
 
改进 
- #1072: 修复并改进 cl 编译器头文件依赖信息
 - 针对 ui 模块和 
xmake f --menu增加 utf8 支持 - 改进 zig 语言在 macOS 上的支持
 - #1135: 针对特定 target 改进多平台多工具链同时配置支持
 - #1153: 改进 llvm 工具链,针对 macos 上编译增加 isysroot 支持
 - #1071: 改进 vs/vsxmake 生成插件去支持远程依赖包
 - 改进 vs/vsxmake 工程生成插件去支持全局的 
set_arch()设置 - #1164: 改进 vsxmake 插件调试加载 console 程序
 - #1179: 改进 llvm 工具链,添加 isysroot
 
Bugs 修复 
- #1091: 修复不正确的继承链接依赖
 - #1105: 修复 vsxmake 插件 c++ 语言标准智能提示错误
 - #1132: 修复 vsxmake 插件中配置路径被截断问题
 - #1142: 修复安装包的时候,出现git找不到问题
 - 修复在 macOS Big Sur 上 macos.version 问题
 - #1084: 修复 
add_defines()中带有双引号和空格导致无法正确处理宏定义的问题 - #1195: 修复 unicode 编码问题,改进 vs 环境查找和进程执行
 
v2.3.9 
新特性 
- 添加新的 xrepo 命令去管理安装 C/C++ 包
 - 支持安装交叉编译的依赖包
 - 新增musl.cc上的工具链支持
 - #1009: 支持忽略校验去安装任意版本的包,
add_requires("libcurl 7.73.0", {verify = false}) - #1016: 针对依赖包增加license兼容性检测
 - #1017: 支持外部/系统头文件支持 
add_sysincludedirs,依赖包默认使用-isystem - #1020: 支持在 archlinux 和 msys2 上查找安装 pacman 包
 - 改进 
xmake f --menu菜单配置,支持鼠标操作 
改进 
- #997: 
xmake project -k cmake插件增加对set_languages的支持 - #998: 支持安装 windows-static-md 类型的 vcpkg 包
 - #996: 改进 vcpkg 目录查找
 - #1008: 改进交叉编译工具链
 - #1030: 改进 xcode.framework and xcode.application 规则
 - #1051: 为 msvc 编译器添加 
edit和embed调试信息格式类型到set_symbols() - #1062: 改进 
xmake project -k vs插件 
v2.3.8 
新特性 
- #955: 添加 Zig 空工程模板
 - #956: 添加 Wasm 编译平台,并且支持 Qt/Wasm SDK
 - 升级luajit到v2.1最新分支版本,并且支持mips64上运行xmake
 - #972: 添加
depend.on_changed()去简化依赖文件的处理 - #981: 添加
set_fpmodels()去抽象化设置math/float-point编译优化模式 - #980: 添加对 Intel C/C++ 和 Fortran 编译器的全平台支持
 - #986: 对16.8以上msvc编译器增加 
c11/c17支持 - #979: 添加对OpenMP的跨平台抽象配置。
add_rules("c++.openmp") 
改进 
- #958: 改进mingw平台,增加对 llvm-mingw 工具链的支持,以及 arm64/arm 架构的支持
 - 增加 
add_requires("zlib~xxx")模式使得能够支持同时安装带有多种配置的同一个包,作为独立包存在 - #977: 改进 find_mingw 在 windows 上的探测
 - #978: 改进工具链的flags顺序
 - 改进XCode工具链,支持macOS/arm64
 
Bugs修复 
v2.3.7 
新特性 
- #2941: 支持通过 winget 来安装 xmake
 - 添加 xmake-tinyc 安装包,内置tinyc编译器,支持windows上无msvc环境也可直接编译c代码
 - 添加 tinyc 编译工具链
 - 添加 emcc (emscripten) 编译工具链去编译 asm.js 和 WebAssembly
 - #947: 通过 
xmake g --network=private配置设置私有网络模式,避免远程依赖包下载访问外网导致编译失败 
改进 
- #907: 改进msvc的链接器优化选项,生成更小的可执行程序
 - 改进ubuntu下Qt环境的支持
 - #918: 改进cuda11工具链的支持
 - 改进Qt支持,对通过 ubuntu/apt 安装的Qt sdk也进行了探测支持,并且检测效率也优化了下
 - 改进 CMake 工程文件生成器
 - #931: 改进导出包,支持导出所有依赖包
 - #930: 如果私有包定义没有版本定义,支持直接尝试下载包
 - #927: 改进android ndk,支持arm/thumb指令模式切换
 - 改进 trybuild/cmake 支持 Android/Mingw/iPhoneOS/WatchOS 工具链
 
Bugs修复 
v2.3.6 
新特性 
- 添加xcode工程生成器插件,
xmake project -k cmake(当前采用cmake生成) - #870: 支持gfortran编译器
 - #887: 支持zig编译器
 - #893: 添加json模块
 - #898: 改进golang项目构建,支持交叉编译
 - #275: 支持go包管理器去集成第三方go依赖包
 - #581: 支持dub包管理器去集成第三方dlang依赖包
 
改进 
v2.3.5 
新特性 
改进 
- #828: 针对protobuf规则增加导入子目录proto文件支持
 - #835: 改进mode.minsizerel模式,针对msvc增加/GL支持,进一步优化目标程序大小
 - #828: protobuf规则支持import多级子目录
 - #838: 支持完全重写内置的构建规则,
add_files("src/*.c", {rules = {"xx", override = true}}) - #847: 支持rc文件的头文件依赖解析
 - 改进msvc工具链,去除全局环境变量的依赖
 - #857: 改进
set_toolchains()支持交叉编译的时候,特定target可以切换到host工具链同时编译 
Bugs修复 
v2.3.4 
新特性 
- #630: 支持*BSD系统,例如:FreeBSD, ..
 - 添加wprint接口去显示警告信息
 - #784: 添加
set_policy()去设置修改一些内置的策略,比如:禁用自动flags检测和映射 - #780: 针对target添加set_toolchains/set_toolsets实现更完善的工具链设置,并且实现platform和toolchains分离
 - #798: 添加
xmake show插件去显示xmake内置的各种信息 - #797: 添加ninja主题风格,显示ninja风格的构建进度条,
xmake g --theme=ninja - #816: 添加mode.releasedbg和mode.minsizerel编译模式规则
 - #819: 支持ansi/vt100终端字符控制
 
改进 
- #771: 检测includedirs,linkdirs和frameworkdirs的输入有效性
 - #774: 
xmake f --menu可视化配置菜单支持窗口大小Resize调整 - #782: 添加add_cxflags等配置flags自动检测失败提示
 - #808: 生成cmakelists插件增加对add_frameworks的支持
 - #820: 支持独立的工作目录和构建目录,保持项目目录完全干净
 
Bugs修复 
v2.3.3 
新特性 
- #727: 支持为android, ios程序生成.so/.dSYM符号文件
 - #687: 支持编译生成objc/bundle程序
 - #743: 支持编译生成objc/framework程序
 - 支持编译bundle, framework程序,以及mac, ios应用程序,并新增一些工程模板
 - 支持对ios应用程序打包生成ipa文件,以及代码签名支持
 - 增加一些ipa打包、安装、重签名等辅助工具
 - 添加xmake.cli规则来支持开发带有xmake/core引擎的lua扩展程序
 
改进 
- #750: 改进qt.widgetapp规则,支持qt私有槽
 
v2.3.2 
新特性 
- 添加powershell色彩主题用于powershell终端下背景色显示
 - 添加
xmake --dry-run -v命令去空运行构建,仅仅为了查看详细的构建命令 - #712: 添加sdcc平台,并且支持sdcc编译器
 
改进 
- #589: 改进优化构建速度,支持跨目标间并行编译和link,编译速度和ninja基本持平
 - 改进ninja/cmake工程文件生成器插件
 - #728: 改进os.cp支持保留源目录结构层级的递归复制
 - #732: 改进find_package支持查找homebrew/cmake安装的包
 - #695: 改进采用android ndk最新的abi命名
 
Bugs修复 
- 修复windows下link error显示问题
 - #718: 修复依赖包下载在多镜像时一定概率缓存失效问题
 - #722: 修复无效的包依赖导致安装死循环问题
 - #719: 修复windows下主进程收到ctrlc后,.bat子进程没能立即退出的问题
 - #720: 修复compile_commands生成器的路径转义问题
 
v2.3.1 
新特性 
- #675: 支持通过设置强制将
*.c作为c++代码编译,add_files("*.c", {sourcekind = "cxx"})。 - #681: 支持在msys/cygwin上编译xmake,以及添加msys/cygwin编译平台
 - 添加socket/pipe模块,并且支持在协程中同时调度process/socket/pipe
 - #192: 尝试构建带有第三方构建系统的项目,还支持autotools项目的交叉编译
 - 启用gcc/clang的编译错误色彩高亮输出
 - #588: 改进工程生成插件
xmake project -k ninja,增加对build.ninja生成支持 
改进 
- #665: 支持 *nix style 的参数输入,感谢@OpportunityLiu的贡献
 - #673: 改进tab命令补全,增加对参数values的补全支持
 - #680: 优化get.sh安装脚本,添加国内镜像源,加速下载
 - 改进process调度器
 - #651: 改进os/io模块系统操作错误提示
 
Bugs修复 
- 修复增量编译检测依赖文件的一些问题
 - 修复log输出导致xmake-vscode插件解析编译错误信息失败问题
 - #684: 修复windows下android ndk的一些linker错误
 
v2.2.9 
新特性 
- #569: 增加对c++模块的实验性支持
 - 添加
xmake project -k xmakefile生成器 - 620: 添加全局
~/.xmakerc.lua配置文件,对所有本地工程生效. - 593: 添加
core.base.socket模块,为下一步远程编译和分布式编译做准备。 
改进 
- #563: 重构构建逻辑,将特定语言的构建抽离到独立的rules中去
 - #570: 改进Qt构建,将
qt.application拆分成qt.widgetapp和qt.quickapp两个构建规则 - #576: 使用
set_toolchain替代add_tools和set_tools,解决老接口使用歧义,提供更加易理解的设置方式 - 改进
xmake create创建模板工程 - #589: 改进默认的构建任务数,充分利用cpu core来提速整体编译速度
 - #598: 改进
find_package支持在macOS上对.tbd系统库文件的查找 - #615: 支持安装和使用其他arch和ios的conan包
 - #629: 改进hash.uuid并且实现uuid v4
 - #639: 改进参数解析器支持
-jN风格传参 
Bugs修复 
- #567: 修复序列化对象时候出现的内存溢出问题
 - #566: 修复安装远程依赖的链接顺序问题
 - #565: 修复vcpkg包的运行PATH设置问题
 - #597: 修复xmake require安装包时间过长问题
 - #634: 修复mode.coverage构建规则,并且改进flags检测
 
v2.2.8 
新特性 
- 添加protobuf c/c++构建规则
 - #468: 添加对 Windows 的 UTF-8 支持
 - #472: 添加
xmake project -k vsxmake去更好的支持vs工程的生成,内部直接调用xmake来编译 - #487: 通过
xmake --files="src/*.c"支持指定一批文件进行编译。 - 针对io模块增加文件锁接口
 - #513: 增加对android/termux终端的支持,可在android设备上执行xmake来构建项目
 - #517: 为target增加
add_cleanfiles接口,实现快速定制化清理文件 - #537: 添加
set_runenv接口去覆盖写入系统envs 
改进 
- #257: 锁定当前正在构建的工程,避免其他xmake进程同时对其操作
 - 尝试采用/dev/shm作为os.tmpdir去改善构建过程中临时文件的读写效率
 - #542: 改进vs系列工具链的unicode输出问题
 - 对于安装的lua脚本,启用lua字节码存储,减少安装包大小(<2.4M),提高运行加载效率。
 
Bugs修复 
- #549: 修复新版vs2019下检测环境会卡死的问题
 
v2.2.7 
新特性 
- #455: 支持使用 clang 作为 cuda 编译器,
xmake f --cu=clang - #440: 为target/run添加
set_rundir()和add_runenvs()接口设置 - #443: 添加命令行tab自动完成支持
 - 为rule/target添加
on_link,before_link和after_link阶段自定义脚本支持 - #190: 添加
add_rules("lex", "yacc")规则去支持lex/yacc项目 
改进 
- #430: 添加
add_cucodegens()api为cuda改进设置codegen - #432: 针对cuda编译支持依赖分析检测(仅支持 CUDA 10.1+)
 - #437: 支持指定更新源,
xmake update github:xmake-io/xmake#dev - #438: 支持仅更新脚本,
xmake update --scriptonly dev - #433: 改进cuda构建支持device-link设备代码链接
 - #442: 改进tests测试框架
 
v2.2.6 
新特性 
- #380: 添加导出compile_flags.txt
 - #382: 简化域设置语法
 - #397: 添加clib包集成支持
 - #404: 增加Qt/Android编译支持,并且支持android apk生成和部署
 - 添加一些Qt空工程模板,例如:
widgetapp_qt,quickapp_qt_staticandwidgetapp_qt_static - #415: 添加
--cu-cxx配置参数到nvcc/-ccbin - 为Android NDK添加
--ndk_stdcxx=y和--ndk_cxxstl=gnustl_static参数选项 
改进 
- 改进远程依赖包管理,丰富包仓库
 - 改进
target:on_xxx自定义脚本,去支持匹配android|armv7-a@macosx,linux|x86_64模式 - 改进loadfile,优化启动速度,windows上启动xmake时间提速98%
 
Bugs修复 
- #400: 修复qt项目c++语言标准设置无效问题
 
v2.2.5 
新特性 
- 添加
string.serialize和string.deserialize去序列化,反序列化对象,函数以及其他类型 - 添加
xmake g --menu去图形化配置全局选项 - #283: 添加
target:installdir()和set_installdir()接口 - #260: 添加
add_platformdirs接口,用户现在可以自定义扩展编译平台 - #310: 新增主题设置支持,用户可随意切换和扩展主题样式
 - #318: 添加
add_installfiles接口到target去自定义安装文件 - #339: 改进
add_requires和find_package使其支持对第三方包管理的集成支持 - #327: 实现对conan包管理的集成支持
 - 添加内置API 
find_packages("pcre2", "zlib")去同时查找多个依赖包,不需要通过import导入即可直接调用 - #320: 添加模板配置文件相关接口,
add_configfiles和set_configvar - #179: 扩展
xmake project插件,新增CMakelist.txt生成支持 - #361: 增加对vs2019 preview的支持
 - #368: 支持
private, public, interface属性设置去继承target配置 - #284: 通过
add_configs()添加和传递用户自定义配置到package() - #319: 添加
add_headerfiles接口去改进头文件的设置 - #342: 为
includes()添加一些内置的辅助函数,例如:check_cfuncs 
改进 
- 针对远程依赖包,改进版本和调试模式切换
 - #264: 支持在windows上更新dev/master版本,
xmake update dev - #293: 添加
xmake f/g --mingw=xxx配置选线,并且改进find_mingw检测 - #301: 改进编译预处理头文件以及依赖头文件生成,编译速度提升30%
 - #322: 添加
option.add_features,option.add_cxxsnippets和option.add_csnippets - 移除xmake 1.x的一些废弃接口, 例如:
add_option_xxx - #327: 改进
lib.detect.find_package增加对conan包管理器的支持 - 改进
lib.detect.find_package并且添加内建的find_packages("zlib 1.x", "openssl", {xxx = ...})接口 - 标记
set_modes()作为废弃接口, 我们使用add_rules("mode.debug", "mode.release")来替代它 - #353: 改进
target:set,target:add并且添加target:del去动态修改target配置 - #356: 添加
qt_add_static_plugins()接口去支持静态Qt sdk - #351: 生成vs201x插件增加对yasm的支持
 - 重构改进整个远程依赖包管理器,更加快速、稳定、可靠,并提供更多的常用包
 
Bugs修复 
- 修复无法通过 
set_optimize()设置优化选项,如果存在add_rules("mode.release")的情况下 - #289: 修复在windows下解压gzip文件失败
 - #296: 修复
option.add_includedirs对cuda编译不生效 - #321: 修复PATH环境改动后查找工具不对问题
 
v2.2.3 
新特性 
- #233: 对mingw平台增加windres的支持
 - #239: 添加cparser编译器支持
 - 添加插件管理器,
xmake plugin --help - 添加
add_syslinks接口去设置系统库依赖,分离与add_links添加的库依赖之间的链接顺序 - 添加 
xmake l time xmake [--rebuild]去记录编译耗时 - #250: 添加
xmake f --vs_sdkver=10.0.15063.0去改变windows sdk版本 - 添加
lib.luajit.ffi和lib.luajit.jit扩展模块 - #263: 添加object目标类型,仅仅用于编译生成object对象文件
 - #269: 每天第一次构建时候后台进程自动清理最近30天的临时文件
 
改进 
- #229: 改进vs toolset选择已经vcproj工程文件生成
 - 改进编译依赖,对源文件列表的改动进行依赖判断
 - 支持解压*.xz文件
 - #249: 改进编译进度信息显示格式
 - #247: 添加
-D和--diagnosis去替换--backtrace,改进诊断信息显示 - #259: 改进 on_build, on_build_file 和 on_xxx 等接口
 - 改进远程包管理器,更加方便的包依赖配置切换
 - 支持only头文件依赖包的安装
 - 支持对包内置links的手动调整,
add_packages("xxx", {links = {}}) 
Bugs修复 
- 修复安装依赖包失败中断后的状态不一致性问题
 
v2.2.2 
新特性 
- 新增fasm汇编器支持
 - 添加
has_config,get_config和is_config接口去快速判断option和配置值 - 添加
set_config接口去设置默认配置 - 添加
$xmake --try去尝试构建工程 - 添加
set_enabled(false)去显示的禁用target - #69: 添加远程依赖包管理, 
add_requires("tbox ~1.6.1") - #216: 添加windows mfc编译规则
 
改进 
- 改进Qt编译编译环境探测,增加对mingw sdk的支持
 - 在自动扫描生成的xmake.lua中增加默认debug/release规则
 - #178: 修改mingw平台下的目标名
 - 对于
add_files()在windows上支持大小写不敏感路径模式匹配 - 改进
detect.sdks.find_qt对于Qt根目录的探测 - #184: 改进
lib.detect.find_package支持vcpkg - #208: 改进rpath对动态库的支持
 - #225: 改进vs环境探测
 
Bugs修复 
- #177: 修复被依赖的动态库target,如果设置了basename后链接失败问题
 - 修复
$ xmake f --menu中Exit问题以及cpu过高问题 - #197: 修复生成的vs201x工程文件带有中文路径乱码问题
 - 修复WDK规则编译生成的驱动在Win7下运行蓝屏问题
 - #205: 修复vcproj工程生成targetdir, objectdir路径设置不匹配问题
 
v2.2.1 
新特性 
- #158: 增加对Cuda编译环境的支持
 - 添加
set_tools和add_tools接口为指定target目标设置编译工具链 - 添加内建规则:
mode.debug,mode.release,mode.profile和mode.check - 添加
is_mode,is_arch和is_plat内置接口到自定义脚本域 - 添加color256代码
 - #160: 增加对Qt SDK编译环境的跨平台支持,并且增加
qt.console,qt.application等规则 - 添加一些Qt工程模板
 - #169: 支持yasm汇编器
 - #159: 增加对WDK驱动编译环境支持
 
改进 
- 添加FAQ到自动生成的xmake.lua文件,方便用户快速上手
 - 支持Android NDK >= r14的版本
 - 改进swiftc对warning flags的支持
 - #167: 改进自定义规则:
rule() - 改进
os.files和os.dirs接口,加速文件模式匹配 - #171: 改进Qt环境的构建依赖
 - 在makefile生成插件中实现
make clean 
Bugs修复 
- 修复无法通过
add_ldflags("xx", "xx", {force = true})强制设置多个flags的问题 - #157: 修复pdb符号输出目录不存在情况下编译失败问题
 - 修复对macho格式目标strip all符号失效问题
 - #168: 修复生成vs201x工程插件,在x64下失败的问题
 
v2.1.9 
新特性 
- 添加
del_files()接口去从已添加的文件列表中移除一些文件 - 添加
rule(),add_rules()接口实现自定义构建规则,并且改进add_files("src/*.md", {rule = "markdown"}) - 添加
os.filesize()接口 - 添加
core.ui.xxx等cui组件模块,实现终端可视化界面,用于实现跟用户进行短暂的交互 - 通过
xmake f --menu实现可视化菜单交互配置,简化工程的编译配置 - 添加
set_values接口到option - 改进option,支持根据工程中用户自定义的option,自动生成可视化配置菜单
 - 在调用api设置工程配置时以及在配置菜单中添加源文件位置信息
 
改进 
- 改进交叉工具链配置,通过指定工具别名定向到已知的工具链来支持未知编译工具名配置, 例如: 
xmake f --cc=gcc@ccmips.exe - #151: 改进mingw平台下动态库生成
 - 改进生成makefile插件
 - 改进检测错误提示
 - 改进
add_cxflags等flags api的设置,添加force参数,来禁用自动检测和映射,强制设置选项:add_cxflags("-DTEST", {force = true}) - 改进
add_files的flags设置,添加force域,用于设置不带自动检测和映射的原始flags:add_files("src/*.c", {force = {cxflags = "-DTEST"}}) - 改进搜索工程根目录策略
 - 改进vs环境探测,支持加密文件系统下vs环境的探测
 - 升级luajit到最新2.1.0-beta3
 - 增加对linux/arm, arm64的支持,可以在arm linux上运行xmake
 - 改进vs201x工程生成插件,更好的includedirs设置支持
 
Bugs修复 
- 修复依赖修改编译和链接问题
 - #151: 修复
os.nuldev()在mingw上传入gcc时出现问题 - #150: 修复windows下ar.exe打包过长obj列表参数,导致失败问题
 - 修复
xmake f --cross无法配置问题 - 修复
os.cd到windows根路径问题 
v2.1.8 
新特性 
- 添加
XMAKE_LOGFILE环境变量,启用输出到日志文件 - 添加对tinyc编译器的支持
 
改进 
- 改进对IDE和编辑器插件的集成支持,例如:Visual Studio Code, Sublime Text 以及 IntelliJ IDEA
 - 当生成新工程的时候,自动生成一个
.gitignore文件,忽略一些xmake的临时文件和目录 - 改进创建模板工程,使用模板名代替模板id作为参数
 - 改进macOS编译平台的探测,如果没有安装xcode也能够进行编译构建,如果有编译器的话
 - 改进
set_config_header接口,支持局部版本号设置,优先于全局set_version,例如:set_config_header("config", {version = "2.1.8", build = "%Y%m%d%H%M"}) 
Bugs修复 
- #145: 修复运行target的当前目录环境
 
v2.1.7 
新特性 
- 添加
add_imports去为target,option和package的自定义脚本批量导入模块,简化自定义脚本 - 添加
xmake -y/--yes去确认用户输入 - 添加
xmake l package.manager.install xxx模块,进行跨平台一致性安装软件包 - 添加vscode编辑器插件支持,更加方便的使用xmake,xmake-vscode
 - 添加
xmake macro ..快速运行最近一次命令 
改进 
- 改进
cprint(),支持24位真彩色输出 - 对
add_rpathdirs()增加对@loader_path和$ORIGIN的内置变量支持,提供可迁移动态库加载 - 改进
set_version("x.x.x", {build = "%Y%m%d%H%M"})支持buildversion设置 - 移除docs目录,将其放置到独立xmake-docs仓库中,减少xmake.zip的大小,优化下载安装的效率
 - 改进安装和卸载脚本,支持DESTDIR和PREFIX环境变量设置
 - 通过缓存优化flags探测,加速编译效率
 - 添加
COLORTERM=nocolor环境变量开关,禁用彩色输出 - 移除
add_rbindings和add_bindings接口 - 禁止在重定向的时候进行彩色输出,避免输出文件中带有色彩代码干扰
 - 更新tbox工程模板
 - 改进
lib.detect.find_program模块接口 - 为windows cmd终端增加彩色输出
 - 增加
-w|--warning参数来启用实时警告输出 
Bugs修复 
- 修复
set_pcxxheader编译没有继承flags配置问题 - #140: 修复
os.tmpdir()在fakeroot下的冲突问题 - #142: 修复
os.getenv在windows上的中文编码问题 - 修复在带有空格路径的情况下,编译错误问题
 - 修复setenv空值的崩溃问题
 
v2.1.6 
改进 
- 改进
add_files,支持对files粒度进行编译选项的各种配置,更加灵活。 - 从依赖的target和option中继承links和linkdirs。
 - 改进
target.add_deps接口,添加继承配置,允许手动禁止依赖继承,例如:add_deps("test", {inherit = false}) - 移除
tbox.pkg二进制依赖,直接集成tbox源码进行编译 
Bugs修复 
- 修复目标级联依赖问题
 - 修复
target:add和option:add问题 - 修复在archlinux上的编译和安装问题
 - 修复
/ZI的兼容性问题,用/Zi替代 
v2.1.5 
新特性 
- #83: 添加 
add_csnippet,add_cxxsnippet到option来检测一些编译器特性 - #83: 添加用户扩展模块去探测程序,库文件以及其他主机环境
 - 添加
find_program,find_file,find_library,find_tool和find_package等模块接口 - 添加
net.*和devel.*扩展模块 - 添加
val()接口去获取内置变量,例如:val("host"),val("env PATH"),val("shell echo hello")andval("reg HKEY_LOCAL_MACHINE\\XX;Value") - 增加对微软.rc资源文件的编译支持,当在windows上编译时,可以增加资源文件了
 - 增加
has_flags,features和has_features等探测模块接口 - 添加
option.on_check,option.after_check和option.before_check接口 - 添加
target.on_load接口 - #132: 添加
add_frameworkdirs接口 - 添加
lib.detect.has_xxx和lib.detect.find_xxx接口 - 添加
add_moduledirs接口在工程中定义和加载扩展模块 - 添加
includes接口替换add_subdirs和add_subfiles - #133: 改进工程插件,通过运行
xmake project -k compile_commands来导出compile_commands.json - 添加
set_pcheader和set_pcxxheader去支持跨编译器预编译头文件,支持gcc,clang和msvc - 添加
xmake f -p cross平台用于交叉编译,并且支持自定义平台名 
改进 
- #87: 为依赖库目标自动添加:
includes和links - 改进
import接口,去加载用户扩展模块 - #93: 改进 
xmake lua,支持运行单行命令和模块 - 改进编译错误提示信息输出
 - 改进
print接口去更好些显示table数据 - #111: 添加
--root通用选项去临时支持作为root运行 - #113: 改进权限管理,现在作为root运行也是非常安全的
 - 改进
xxx_script工程描述api,支持多平台模式选择, 例如:on_build("iphoneos|arm*", function (target) end) - 改进内置变量,支持环境变量和注册表数据的获取
 - 改进vstudio环境和交叉工具链的探测
 - #71: 改进从环境变量中探测链接器和编译器
 - 改进option选项检测,通过多任务检测,提升70%的检测速度
 - #129: 检测链接依赖,如果源文件没有改变,就不必重新链接目标文件了
 - 在vs201x工程插件中增加对
*.asm文件的支持 - 标记
add_bindings和add_rbindings为废弃接口 - 优化
xmake rebuild在windows上的构建速度 - 将
core.project.task模块迁移至core.base.task - 将
echo和app2ipa插件迁移到 xmake-plugins 仓库 - 添加
set_config_header("config.h", {prefix = ""})代替set_config_h和set_config_h_prefix 
Bugs修复 
- 修复
try-catch-finally - 修复解释器bug,解决当加载多级子目录时,根域属性设置不对
 - #115: 修复安装脚本
get.sh的路径问题 - 修复
import()导入接口的缓存问题 
v2.1.4 
新特性 
改进 
- 修改菜单选项颜色
 - #71: 针对widows编译器改进优化选项映射
 - #73: 尝试获取可执行文件路径来作为xmake的脚本目录
 - 在
add_subdirs中的子xmake.lua中,使用独立子作用域,避免作用域污染导致的干扰问题 - #78: 美化非全屏终端窗口下的
xmake --help输出 - 避免产生不必要的
.xmake目录,如果不在工程中的时候 
Bugs修复 
- #67: 修复 
sudo make install命令权限问题 - #70: 修复检测android编译器错误
 - 修复临时文件路径冲突问题
 - 修复
os.host,os.arch等接口 - 修复根域api加载干扰其他子作用域问题
 - #77: 修复
cprint色彩打印中断问题 
v2.1.3 
新特性 
- #65: 为target添加
set_default接口用于修改默认的构建所有targets行为 - 允许在工程子目录执行
xmake命令进行构建,xmake会自动检测所在的工程根目录 - 添加
add_rpathdirsapi到target和option,支持动态库的自动加载运行 
改进 
- #61: 提供更加安全的
xmake installandxmake uninstall任务,更友好的处理root安装问题 - 提供
rpm,deb和osxpkg安装包 - #63: 改进安装脚本,实现更加安全的构建和安装xmake
 - #61: 禁止在root权限下运行xmake命令,增强安全性
 - 改进工具链检测,通过延迟延迟检测提升整体检测效率
 - 当自动扫面生成
xmake.lua时,添加更友好的用户提示,避免用户无操作 
Bugs修复 
- 修复版本检测的错误提示信息
 - #60: 修复macosx和windows平台的xmake自举编译
 - #64: 修复构建android 
armv8-a架构失败问题 - #50: 修复构建android可执行程序,无法运行问题
 
v2.1.2 
新特性 
- 添加aur打包脚本,并支持用
yaourt包管理器进行安装。 - 添加set_basename接口,便于定制化修改生成后的目标文件名
 
改进 
- 支持vs2017编译环境
 - 支持编译android版本的rust程序
 - 增强vs201x工程生成插件,支持同时多模式、架构编译
 
Bugs修复 
- 修复编译android程序,找不到系统头文件问题
 - 修复检测选项行为不正确问题
 - #57: 修复代码文件权限到0644
 
v2.1.1 
新特性 
- 添加
--links,--linkdirsand--includedirs配置参数 - 添加app2ipa插件
 - 为
xmake.lua工程描述增加dictionay语法风格 - 提供智能扫描编译模式,在无任何
xmake.lua等工程描述文件的情况下,也能直接快速编译 - 为
xmake.lua工程描述添加set_xmakever接口,更加友好的处理版本兼容性问题 - 为
objc和swift程序添加add_frameworks接口 - 更加快速方便的多语言扩展支持,增加
golang,dlang和rust程序构建的支持 - 添加
target_end,option_end和task_end等可选api,用于显示结束描述域,进入根域设置,提高可读性 - 添加
golang,dlang和rust工程模板 
改进 
- 工程生成插件支持vs2017
 - 改进gcc/clang编译器警告和错误提示
 - 重构代码架构,改进多语言支持,更加方便灵活的扩展语言支持
 - 改进print接口,同时支持原生lua print以及格式化打印
 - 如果xmake.lua不存在,自动扫描工程代码文件,并且生成xmake.lua进行编译
 - 修改license,使用更加宽松的Apache License 2.0
 - 移除一些二进制工具文件
 - 移除install.bat脚本,提供windows nsis安装包支持
 - 使用docute重写文档,提供更加完善的文档支持
 - 增强
os.run,os.exec,os.cp,os.mv和os.rm等接口,支持通配符模式匹配和批量文件操作 - 精简和优化构建输出信息,添加
-q|--quiet选项实现静默构建 - 改进
makefile生成插件,抽取编译工具和编译选项到全局变量 
Bugs修复 
- #41: 修复在windows下自动检测x64失败问题
 - #43: 避免创建不必要的.xmake工程缓存目录
 - 针对android版本添加c++ stl搜索目录,解决编译c++失败问题
 - 修复在rhel 5.10上编译失败问题
 - 修复
os.iorun返回数据不对问题 
v2.0.5 
新特性 
- 为解释器作用域增加一些内建模块支持
 - 针对windows x64平台,支持ml64汇编器
 
改进 
- 增强ipairs和pairs接口,支持过滤器模式,简化脚本代码
 - 为vs201x工程生成增加文件filter
 - 移除
core/tools目录以及msys工具链,在windows上使用xmake自编译core源码进行安装,优化xmake源码磁盘空间 - 移除
xmake/packages,默认模板安装不再内置二进制packages,暂时需要手动放置,以后再做成自动包依赖下载编译 
Bugs修复 
- 修复msvc的编译选项不支持问题:
-def:xxx.def - 修复ml.exe汇编器脚本
 - 修复选项链接顺序问题
 
v2.0.4 
新特性 
- 在
xmake.lua中添加原生shell支持,例如:add_ldflags("$(shell pkg-config --libs sqlite3)") - 编译windows目标程序,默认默认启用pdb符号文件
 - 在windows上添加调试器支持(vsjitdebugger, ollydbg, windbg ... )
 - 添加
getenv接口到xmake.lua的全局作用域中 - 添加生成vstudio工程插件(支持:vs2002 - vs2015)
 - 为option添加
set_default接口 
改进 
- 增强内建变量的处理
 - 支持字符串类型的选项option设置
 
Bugs修复 
- 修复在linux下检测ld连接器失败,如果没装g++的话
 - 修复
*.cxx编译失败问题 
v2.0.3 
新特性 
- 增加头文件依赖自动检测和增量编译,提高编译速度
 - 在终端中进行颜色高亮提示
 - 添加调试器支持,
xmake run -d program ... 
改进 
- 增强运行shell的系列接口
 - 更新luajit到v2.0.4版本
 - 改进makefile生成插件,移除对xmake的依赖,并且支持
windows/linux/macosx等大部分pc平台 - 优化多任务编译速度,在windows下编译提升较为明显
 
Bugs修复 
- 修复安装目录错误问题
 - 修复
import根目录错误问题 - 修复在多版本vs同时存在的情况下,检测vs环境失败问题
 
v2.0.2 
改进 
- 修改安装和卸载的action处理
 - 更新工程模板
 - 增强函数检测
 
Bugs修复 
- #7: 修复用模板创建工程后,target名不对问题:'[targetname]'
 - #9: 修复clang不支持c++11的问题
 - 修复api作用域泄露问题
 - 修复在windows上的一些路径问题
 - 修复检测宏函数失败问题
 - 修复检测工具链失败问题
 - 修复windows上编译android版本失败
 
v2.0.1 
新特性 
- 增加task任务机制,可运行自定义任务脚本
 - 实现plugin扩展机制,可以很方便扩展实现自定义插件,目前已实现的一些内置插件
 - 增加project文件导出插件(目前已支持makefile的生成,后续会支持:vs, xcode等工程的生成)
 - 增加hello xmake插件(插件demo)
 - 增加doxygen文档生成插件
 - 增加自定义宏脚本插件(支持动态宏记录、宏回放、匿名宏、批量导入、导出等功能)
 - 增加更多的类库用于插件化开发
 - 实现异常捕获机制,简化上层调用逻辑
 - 增加多个option进行宏绑定,实现配置一个参数,就可以同时对多个配置进行生效
 - 增加显示全局构建进度
 
改进 
- 重构整个xmake.lua描述文件的解释器,更加的灵活可扩展
 - 更加严格的语法检测机制
 - 更加严格的作用域管理,实现沙盒引擎,对xmake.lua中脚本进行沙盒化处理,使得xmake.lua更加的安全
 - 简化模板的开发,简单几行描述就可以扩展一个新的自定义工程模板
 - 完全模块化platforms、tools、templates、actions,以及通过自注册机制,只需把自定义的脚本放入对应目录,就可实现快速扩展
 - 针对所有可扩展脚本所需api进行大量简化,并实现大量类库,通过import机制进行导入使用
 - 移除对gnu make/nmake等make工具的依赖,不再需要makefile,实现自己的make算法,
 - 优化构建速度,支持多任务编译(支持vs编译器)(实测:比v1.0.4提升x4倍的构建性能)
 - 优化自动检测机制,更加的稳定和准确
 - 修改部分工程描述api,增强扩展性,减少一些命名歧义(对低版本向下兼容)
 - 优化静态库合并:
add_files("*.a"),修复一些bug - 优化交叉编译,通过
--sdk=xxx参数实现更加方便智能的进行交叉编译配置,简化mingw平台的编译配置 - 简化命令行配置开关, 支持
xmake config --xxx=[y|n|yes|no|true|false]等开关值 - 合并iphoneos和iphonesimulator平台,以及watchos和watchsimulator平台,通过arch来区分,使得打包更加方便,能够支持一次性打包iphoneos的所有arch到一个包中
 
Bugs修复 
v1.0.4 
新特性 
- 增加对windows汇编器的支持
 - 为xmake create增加一些新的工程模板,支持tbox版本
 - 支持swift代码
 - 针对-v参数,增加错误输出信息
 - 增加apple编译平台:watchos, watchsimulator的编译支持
 - 增加对windows: x64, amd64, x86_amd64架构的编译支持
 - 实现动态库和静态库的快速切换
 - 添加-j/--jobs参数,手动指定是否多任务编译,默认改为单任务编译
 
改进 
- 增强
add_files接口,支持直接添加*.o/obj/a/lib文件,并且支持静态库的合并 - 裁剪xmake的安装过程,移除一些预编译的二进制程序
 
Bugs修复 
- #1: 修复win7上安装失败问题
 - 修复和增强工具链检测
 - 修复一些安装脚本的bug, 改成外置sudo进行安装
 - 修复linux x86_64下安装失败问题
 
v1.0.3 
新特性 
- 添加set_runscript接口,支持自定义运行脚本扩展
 - 添加import接口,使得在xmake.lua中可以导入一些扩展模块,例如:os,path,utils等等,使得脚本更灵活
 - 添加android平台arm64-v8a支持
 
Bugs修复 
- 修复set_installscript接口的一些bug
 - 修复在windows x86_64下,安装失败的问题
 - 修复相对路径的一些bug