Releases: xmake-io/xmake
Releases · xmake-io/xmake
xmake v2.5.2
New features
- #955: Support
zig cc
and zig c++
as c/c++ compiler
- #955: Support zig cross-compilation
- #1177: Improve to detect terminal and color codes
- #1216: Pass custom configuration scripts to xrepo
- Add linuxos builtin module to get linux system information
- #1217: Support to fetch remote toolchain package when building project
- #1123: Add
rule("utils.symbols.export_all")
to export all symbols for windows/dll
- #1181: Add
utils.platform.gnu2mslib(mslib, gnulib)
module api to convert mingw/xxx.dll.a to msvc xxx.lib
- #1246: Improve rules and generators to support commands list
- #1239: Add
add_extsources
to improve find external packages
- #1241: Support add .manifest files for windows program
- Support to use
xrepo remove --all
to remove all packages
- #1254: Support to export packages to parent target
Change
- #1226: Add missing qt include directories
- #1183: Improve c++ lanuages to support Qt6
- #1237: Add qt.ui files for vsxmake plugin
- Improve vs/vsxmake plugins to support precompiled header and intellisense
- #1090: Simplify integration of custom code generators
- #1065: Improve protobuf rule to support compile_commands generators
- #1249: Improve vs/vsxmake generator to support startproject
- #605: Improve to link orders for add_deps/add_packages
- Remove deprecated
add_defines_h_if_ok
and add_defines_h
apis for option
Bugs fixed
- #1219: Fix version check and update
- #1235: Fix include directories with spaces
新特性
- #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_ok
and add_defines_h
接口
Bugs 修复
- #1219: 修复版本检测和更新
- #1235: 修复 includes 搜索路径中带有空格编译不过问题
xmake v2.5.1
New features
- #1035: The graphics configuration menu fully supports mouse events, and support scroll bar
- #1098: Support stdin for os.execv
- #1079: Add autoupdate plugin rule for vsxmake,
add_rules("plugin.vsxmake.autoupdate")
- Add
xmake f --vs_runtime=MT
and set_runtimes("MT")
to set vs runtime for targets and packages
- #1032: Support to enum registry keys and values
- #1026: Support group for vs/vsxmake project
- #1178: Add
add_requireconfs()
api to rewrite configs of depend packages
- #1043: Add
luarocks.module
rule for luarocks-build-xmake
- #1190: Support for Apple Silicon (macOS ARM)
- #1145: Support Qt deploy for Windows, thanks @SirLynix
Change
- #1072: Fix and improve to parse cl deps
- Support utf8 for ui modules and
xmake f --menu
- Improve to support zig on macOS
- #1135: Improve multi-toolchain and multi-platforms for targets
- #1153: Improve llvm toolchain to support sysroot on macOS
- #1071: Improve to generate vs/vsxmake project to support for remote packages
- Improve vs/vsxmake project plugin to support global
set_arch()
setting
- #1164: Improve to launch console programs for vsxmake project
- #1179: Improve llvm toolchain and add isysroot
Bugs fixed
- #1091: Fix incorrect ordering of inherited library dependencies
- #1105: Fix c++ language intellisense for vsxmake
- #1132: Fix TrimEnd bug for vsxmake
- #1142: Fix git not found when installing packages
- Fix macos.version bug for macOS Big Sur
- #1084: Fix
add_defines()
bug (contain spaces)
- #1195: Fix unicode problem for vs and improve find_vstudio/os.exec
新特性
- #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 环境查找和进程执行
xmake v2.3.9
New features
- Add new xrepo command to manage C/C++ packages
- Support for installing packages of cross-compilation
- Add musl.cc toolchains
- #1009: Support select and install any version package, e.g.
add_requires("libcurl 7.73.0", {verify = false})
- #1016: Add license checking for target/packages
- #1017: Support external/system include directories
add_sysincludedirs
for package and toolchains
- #1020: Support to find and install pacman package on archlinux and msys2
- Support mouse for
xmake f --menu
Change
- #997: Support to set std lanuages for
xmake project -k cmake
- #998: Support to install vcpkg packages with windows-static-md
- #996: Improve to find vcpkg directory
- #1008: Improve cross toolchains
- #1030: Improve xcode.framework and xcode.application rules
- #1051: Add
edit
and embed
to set_symbols()
only for msvc
- #1062: Improve
xmake project -k vs
plugin.
新特性
- 添加新的 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
插件
xmake v2.3.8
New features
- #955: Add zig project templates
- #956: Add wasm platform and support Qt/Wasm SDK
- Upgrade luajit vm and support for runing on mips64 device
- #972: Add
depend.on_changed()
api to simplify adding dependent files
- #981: Add
set_fpmodels()
for math optimization mode
- #980: Support Intel C/C++ and Fortran Compiler
- #986: Support for
c11
and c17
for MSVC Version 16.8 and Above
- #979: Add Abstraction for OpenMP.
add_rules("c++.openmp")
Change
- #958: Improve mingw platform to support llvm-mingw toolchain
- Improve
add_requires("zlib~xxx")
to support for installing multi-packages at same time
- #977: Improve find_mingw for windows
- #978: Improve toolchain flags order
- Improve Xcode toolchain to support for macOS/arm64
Bugs fixed
- #951: Fix emcc support for windows
- #992: Fix filelock bug
新特性
- #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修复
- #951: 修复 emcc (WebAssembly) 工具链在windows上的支持
- #992: 修复文件锁偶尔打开失败问题
xmake v2.3.7
New features
- #2941: Add support for winget
- Add xmake-tinyc installer without msvc compiler for windows
- Add tinyc compiler toolchain
- Add emcc compiler toolchain (emscripten) to compiling to asm.js and WebAssembly
- #947: Add
xmake g --network=private
to enable the private network
Change
- #907: Improve to the linker optimization for msvc
- Improve to detect qt sdk environment
- #918: Improve to support cuda11 toolchains
- Improve Qt support for ubuntu/apt
- Improve CMake project generator
- #931: Support to export packages with all dependences
- #930: Support to download package without version list directly
- #927: Support to switch arm/thumb mode for android ndk
- Improve trybuild/cmake to support android/mingw/iphoneos/watchos toolchains
Bugs fixed
- #903: Fix install vcpkg packages fails
- #912: Fix the custom toolchain
- #914: Fix bad light userdata pointer for lua on some aarch64 devices
新特性
- #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修复
- #903: 修复vcpkg包安装失败问题
- #912: 修复自定义工具链
- #914: 修复部分aarch64设备上运行lua出现bad light userdata pointer问题
xmake v2.3.6
New features
- Add
xmake project -k xcode
generator (use cmake)
- #870: Support gfortran compiler
- #887: Support zig compiler
- #893: Add json module
- #898: Support cross-compilation for golang
- #275: Support go package manager to install go packages
- #581: Support dub package manager to install dlang packages
Change
- #868: Support new cl.exe dependency report files,
/sourceDependencies xxx.json
- #902: Improve to detect cross-compilation toolchain
新特性
- 添加xcode工程生成器插件,
xmake project -k cmake
(当前采用cmake生成)
- #870: 支持gfortran编译器
- #887: 支持zig编译器
- #893: 添加json模块
- #898: 改进golang项目构建,支持交叉编译
- #275: 支持go包管理器去集成第三方go依赖包
- #581: 支持dub包管理器去集成第三方dlang依赖包
改进
- #868: 支持新的cl.exe的头文件依赖输出文件格式,
/sourceDependencies xxx.json
- #902: 改进交叉编译工具链
xmake v2.3.5
New features
- Add
xmake show -l envs
to show all builtin envirnoment variables
- #861: Support search local package file to install remote package
- #854: Support global proxy settings for curl, wget and git
Change
- #828: Support to import sub-directory files for protobuf rules
- #835: Improve mode.minsizerel to add /GL flags for msvc
- #828: Support multi-level directories for protobuf/import
- #838: Support to override builtin-rules for
add_files("src/*.c", {rules = {"xx", override = true}})
- #847: Support to parse include deps for rc file
- Improve msvc tool chain, remove the dependence of global environment variables
- #857: Improved
set_toolchains()
when cross-compilation is supported, specific target can be switched to host toolchain and compiled at the same time
Bugs fixed
- Fix the progress bug for theme
- #829: Fix invalid sysroot path for macOS
- #832: Fix find_packages bug for the debug mode
新特性
- 添加
xmake show -l envs
去显示xmake内置的环境变量列表
- #861: 支持从指定目录搜索本地包去直接安装远程依赖包
- #854: 针对wget, curl和git支持全局代理设置
改进
- #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修复
- 修复进度字符显示
- #829: 修复由于macOS大小写不敏感系统导致的sysroot无效路径问题
- #832: 修复find_packages在debug模式下找不到的问题
xmake v2.3.4
New features
- #630: Support *BSD system, e.g. FreeBSD, ..
- Add wprint builtin api to show warnings
- #784: Add
set_policy()
to set and modify some builtin policies
- #780: Add set_toolchains/set_toolsets for target and improve to detect cross-compilation toolchains
- #798: Add
xmake show
plugin to show some builtin configuration values and infos
- #797: Add ninja theme style, e.g.
xmake g --theme=ninja
- #816: Add mode.releasedbg and mode.minsizerel rules
- #819: Support ansi/vt100 terminal control
Change
- #771: Check includedirs, linkdirs and frameworkdirs
- #774: Support ltui windows resize for
xmake f --menu
- #782: Add check flags failed tips for add_cxflags, ..
- #808: Support add_frameworks for cmakelists
- #820: Support independent working/build directory
Bug fixed
- #786: Fix check header file deps
- #810: Fix strip debug bug for linux
新特性
- #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修复
- #786: 修复头文件依赖检测
- #810: 修复linux下gcc strip debug符号问题
xmake v2.3.3
New features
- #727: Strip and generate debug symbols file (.so/.dSYM) for android/ios program
- #687: Support to generate objc/bundle program.
- #743: Support to generate objc/framework program.
- Support to compile bundle, framework, mac application and ios application, and all some project templates
- Support generate ios *.ipa file and codesign
- Add xmake.cli rule to develop lua program with xmake core engine
Change
- #750: Improve qt.widgetapp rule to support private slot
新特性
- #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私有槽
xmake v2.3.2
New features
- Add powershell theme for powershell terminal
- Add
xmake --dry-run -v
to dry run building target and only show verbose build command.
- #712: Add sdcc platform and support sdcc compiler
Change
- #589: Improve and optimize build speed, supports parallel compilation and linking across targets
- Improve the ninja/cmake generator
- #728: Improve os.cp to support reserve source directory structure
- #732: Improve find_package to support
homebrew/cmake
pacakges
- #695: Improve android abi
Bugs fixed
- Fix the link errors output issues for msvc
- #718: Fix download cache bug for package
- #722: Fix invalid package deps
- #719: Fix process exit bug
- #720: Fix compile_commands generator
新特性
- 添加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生成器的路径转义问题
Multi-task parallel compilation
buildsystem |
Termux (8core/-j12) |
buildsystem |
MacOS (8core/-j12) |
xmake |
24.890s |
xmake |
12.264s |
ninja |
25.682s |
ninja |
11.327s |
cmake(gen+make) |
5.416s+28.473s |
cmake(gen+make) |
1.203s+14.030s |
cmake(gen+ninja) |
4.458s+24.842s |
cmake(gen+ninja) |
0.988s+11.644s |
Single task compilation
buildsystem |
Termux (-j1) |
buildsystem |
MacOS (-j1) |
xmake |
1m57.707s |
xmake |
39.937s |
ninja |
1m52.845s |
ninja |
38.995s |
cmake(gen+make) |
5.416s+2m10.539s |
cmake(gen+make) |
1.203s+41.737s |
cmake(gen+ninja) |
4.458s+1m54.868s |
cmake(gen+ninja) |
0.988s+38.022s |