New features
- #7558: Add
check_alignof/alignofdetection support - #7587: Support
xmake show --format=json - #7607: Support passing multiple target names to
build/cleanand other commands - #7634: Add filter support for xpack
- #7654: Add
batchcmds:calland lua-file transform support forbin2obj/bin2c - #7680: Rework
xmake pluginto install plugins from repositories (repo@nameor name), git urls (github:user/repo[#branch]) and local directories using the packages-styleplugins/<first-letter>/<name>layout, and list built-in / installed / available plugins with their descriptions - Add gcc-16 toolchain support
Changes
- #7562: Improve nuget version handling
- #7564: Improve vcpkg dependency info in
find_package - #7582: Support
set_encodingsand filter output for nvcc - #7609: Use
FormatMessageWfor Windows system error messages - #7614: Improve
cargopackage installation - #7619: Work around clangd drive-letter casing issue
- #7620: Improve cl flag detection and output handling on vs2015
- #7625: Improve verilator rules
- #7629: vsxmake: support custom source types in the solution explorer and nonetype targets
- #7630: Add
add_toolsetapi checker - #7637: Improve readline / curses options for mingw
- #7648: Improve error tips
- #7655: Improve bin2obj object-flag detection and add ppc / mips support
- #7657: Update NDK sdkver for riscv64
- #7666: Improve vcpkg package discovery
- #7672: Add fallback download support
- #7688: Improve static libc++ runtime links for clang
- #7689: Rewrite
xmake plugin --installto install plugins from xmake-repo aspluginkind packages, reusing the package installation flow - #7693: Replace the deprecated tbox interfaces
- Improve elf rpath cleaning and package path handling
- Add xcodebuild detection
- Update the bundled tbox
Bugs fixed
- #7561: Fix
-flto=thinregression for clang-cl - #7563: Fix crash in
containsand improve PCH for C++ std modules - #7580: Fix the format plugin when the header path is already absolute
- #7581: Fix missing paren in package loading
- #7583: Fix splitting global flags for cmake packages
- #7599: Fix gzip / tar detection on OpenBSD
- #7600: Fix enabling the build cache memcache
- #7601: Fix verilator to always define
TRACE - #7602: Fix package load memcache
- #7603: Fix
rmdirvia tbox update - #7604: Fix rpath cleaning for elf
- #7608: Fix typos and format command menus
- #7611: Fix cache environment variable handling (#7576)
- #7622: Fix default maintainer for deb packaging
- #7627: Fix PATH handling in debuild
- #7631: Fix PATH handling when installing deb packages
- #7633: Fix pkg-config path for BSD in the Meson backend
- #7640: Improve emcc detection with a fallback search
- #7644: Fix stack buffer overflow for long paths in path translation
- #7645: Fix removing read-only directories
- #7659: Fix emcc detection for
.exe/.baton Windows - #7661: Revert static libc++ link for clang
- #7668: Fix passing paths to cmake
- #7671: Fix tbox bugs
- #7674: Fix Mach host send-right leaks on macOS
- #7676: Fix masm symbol flags for embed / edit levels
- #7679: Fix
set_pcheaderfor msvc in C mode - #7684: Fix wrong Lua stack index in
process.open - #7685: Fix engine resource leaks
- #7687: Fix the ninja generator to emit build edges for
win.sdk.resourcesource batches (#7682) - #7692: Fix dependency order for
build.c++.modules.tryreuse - Fix trybuild for scons
新特性
- #7558: 添加
check_alignof/alignof检测支持 - #7587: 支持
xmake show --format=json - #7607: 支持给
build/clean等命令传递多个目标名 - #7634: 为 xpack 添加过滤器支持
- #7654: 为
bin2obj/bin2c添加batchcmds:call和 lua 文件 transform 支持 - #7680: 重构
xmake plugin,支持从仓库(repo@name或名称)、git 地址(github:user/repo[#branch])以及本地目录安装插件,仓库中的插件采用与 packages 相同的plugins/<首字母>/<名称>布局,并列出内置、已安装和仓库中可安装的插件及其描述 - 添加 gcc-16 工具链支持
改进
- #7562: 改进 nuget 版本处理
- #7564: 改进
find_package中的 vcpkg 依赖信息 - #7582: 支持 nvcc 的
set_encodings并过滤其输出 - #7609: 使用
FormatMessageW获取 Windows 系统错误信息 - #7614: 改进
cargo包安装 - #7619: 规避 clangd 盘符大小写问题
- #7620: 改进 vs2015 下 cl 的编译选项检测和输出处理
- #7625: 改进 verilator 规则
- #7629: vsxmake: 支持解决方案资源管理器中的自定义源类型和 nonetype 目标
- #7630: 添加
add_toolsetapi 检查器 - #7637: 改进 mingw 下的 readline / curses 选项
- #7648: 改进错误提示
- #7655: 改进 bin2obj 的目标文件 flag 检测并添加 ppc / mips 支持
- #7657: 更新 riscv64 的 NDK sdkver
- #7666: 改进 vcpkg 包查找
- #7672: 添加下载失败回退支持
- #7688: 改进 clang 的静态 libc++ 运行时链接
- #7689: 重写
xmake plugin --install,将插件作为plugin类型的包从 xmake-repo 安装,复用包安装流程 - #7693: 替换 tbox 中已废弃的接口
- 改进 elf rpath 清理和包路径处理
- 添加 xcodebuild 检测
- 更新内置的 tbox
Bugs 修复
- #7561: 修复 clang-cl 的
-flto=thin回归问题 - #7563: 修复
contains崩溃并改进 C++ std 模块的 PCH - #7580: 修复 format 插件在头文件路径已是绝对路径时的处理
- #7581: 修复包加载函数中缺失的括号
- #7583: 修复 cmake 包的全局 flags 拆分
- #7599: 修复 OpenBSD 上的 gzip / tar 检测
- #7600: 修复构建缓存 memcache 的启用
- #7601: 修复 verilator 确保定义
TRACE - #7602: 修复包加载 memcache
- #7603: 通过更新 tbox 修复
rmdir - #7604: 修复 elf 的 rpath 清理
- #7608: 修复拼写错误并格式化命令菜单
- #7611: 修复缓存环境变量处理(#7576)
- #7622: 修复 deb 打包的默认 maintainer
- #7627: 修复 debuild 中的 PATH 处理
- #7631: 修复安装 deb 包时的 PATH 处理
- #7633: 修复 Meson 后端在 BSD 上的 pkg-config 路径
- #7640: 改进 emcc 检测,添加回退查找
- #7644: 修复路径转换中长路径的栈缓冲区溢出
- #7645: 修复删除只读目录
- #7659: 修复 Windows 上 emcc 的
.exe/.bat检测 - #7661: 回退 clang 的静态 libc++ 链接
- #7668: 修复向 cmake 传递路径
- #7671: 修复 tbox 的一些 bug
- #7674: 修复 macOS 上的 Mach host send-right 泄漏
- #7676: 修复 masm 的 embed / edit 级别符号 flag
- #7679: 修复 msvc 在 C 模式下的
set_pcheader - #7684: 修复
process.open中错误的 Lua 栈索引 - #7685: 修复引擎资源泄漏
- #7687: 修复 ninja 生成器未给
win.sdk.resource源文件批次生成构建边的问题(#7682) - #7692: 修复
build.c++.modules.tryreuse的依赖顺序 - 修复 scons 的 trybuild
What's Changed
- Introduced check_alignof support like the one for check_sizeof by @KaruroChori in #7558
- Fix LTO regression for clang-cl introduced in #7525 by @DavidWang19 in #7561
- improve nuget version by @waruqi in #7562
- Fix missing paren in package loading function by @Shiffted in #7581
- support set_encodings with nvcc by @choyy in #7582
- plugin/format: fix doubled paths for absolute header files on Windows by @ArthurVasseur in #7580
- Enable
xmake show --format=jsonby @Meha555 in #7587 - Fix openbsd extractor detection by @Shiffted in #7599
- fix setting build_cache.is_enabled memcache by @Shiffted in #7600
- update tbox to fix rmdir by @waruqi in #7603
- fix(verilator): make sure to define TRACE by @PFiS1737 in #7601
- fix load package memcache by @Shiffted in #7602
- fix clean rpath for elf by @waruqi in #7604
- Support multiple targets by @waruqi in #7607
- format menus by @waruqi in #7608
- use FormatMessageW for Windows system error messages by @choyy in #7609
- issue 7576 by @RolandHughes in #7611
- fix vcpkg find_package in manifest mode by @Akylzhan in #7564
- fix(package): split global flags for build envs by @zhaob1n in #7583
- improve cargo/install_package by @waruqi in #7614
- workaround for clangd drive letter casing issue by @choyy in #7619
- use vstool.iorunv in has_flags by @waruqi in #7620
- fix(deb): set the default maintainer when packaging deb files by @binLep in #7622
- improve verilator rules by @waruqi in #7625
- fix(deb): xmake could not be found #7626 by @binLep in #7627
- Add toolset api checker in target by @waruqi in #7630
- Fix pkgconfig path for bsd in meson.lua by @EZ4Stephen in #7633
- add filter support for xpack by @waruqi in #7634
- Enforce static linkage of readline and curses for mingw platform support by @luadebug in #7637
- fix(deb): Avoid passing empty PATH arguments to debuild by @binLep in #7631
- fix(emsdk): improve emcc detection logic by adding fallback search by @luadebug in #7640
- Improve custom source types in Solution Explorer by @waruqi in #7629
- improve pch for std modules by @waruqi in #7563
- Fix path translate by @waruqi in #7644
- update tbox to remove readonly dir by @waruqi in #7645
- improve error tips by @waruqi in #7648
- add pic to package test by @waruqi in #7649
- Update NDK's sdkver for riscv64 architecture by @ifarbod in #7657
- Add transform support for bin2obj/bin2c by @waruqi in #7654
- fix bin2obj for some archs by @waruqi in #7655
- refactor emcc detection to support both .exe and .bat on windows by @ifarbod in #7659
- fix clang c++_static runtime by @waruqi in #7661
- fix pass path to cmake by @waruqi in #7668
- improve to find vcpkg packages by @waruqi in #7666
- update tbox to fix some bugs by @waruqi in #7671
- update tbox and add fallback download by @waruqi in #7672
- fix(macOS): fix Mach host send-right leaks by @apocelipes in #7674
- fix masm symbol flags for embed/edit levels (A4018) by @bionicbeagle in #7676
- fix: fix engine resource leaks by @apocelipes in #7685
- fix: correct Lua stack index in process.open by @ArbStray in #7684
- fix set_pcheader for msvc in c mode by @0xb1aded in #7679
- Support for plugin distribution based on xmake-repo by @waruqi in #7680
- Fix ninja project generator: emit build edge for Windows .rc resource files by @bionicbeagle in #7687
- Rewrite plugin manager for xmake-repo by @waruqi in #7689
- improve clang static libc++ runtimes by @waruqi in #7688
- fix: fix deprecated warnings by @apocelipes in #7693
- fix build.c++.modules.tryreuse deps orders by @waruqi in #7692
New Contributors
- @ArthurVasseur made their first contribution in #7580
- @Meha555 made their first contribution in #7587
- @PFiS1737 made their first contribution in #7601
- @RolandHughes made their first contribution in #7611
- @Akylzhan made their first contribution in #7564
- @zhaob1n made their first contribution in #7583
- @EZ4Stephen made their first contribution in #7633
- @bionicbeagle made their first contribution in #7676
- @ArbStray made their first contribution in #7684
- @0xb1aded made their first contribution in #7679
Full Changelog: v3.0.9...v3.1.0