news 2026/4/3 8:09:49

2601,xmake的3.0.6更新

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2601,xmake的3.0.6更新

新特性介绍

安卓本地应用构建支持

新版本``进一步改进支持了构建安卓本地应用.现在可在android.native_app规则中配置更多参数,包括android_sdk_version,android_manifest,android_res,keystore等.

此外,对需要自定义入口和事件循环的场景(如游戏引擎集成),支持设置native_app_glue=false来禁止默认android_native_app_glue库.

add_rules("mode.debug","mode.release")add_requires("raylib 5.5.0")target("raydemo_custom_glue")set_kind("binary")set_languages("c++17")add_files("src/main.cpp","src/android_native_app_glue.c")add_syslinks("log")add_packages("raylib")add_rules("android.native_app",{android_sdk_version="35",android_manifest="android/AndroidManifest.xml",android_res="android/res",keystore="android/debug.jks",keystore_pass="123456",package_name="com.raylib.custom_glue",native_app_glue=false,--//禁止默认 gluelogcat_filters={"raydemo_custom_glue","raylib"}})

bin2obj规则

新增的utils.bin2obj规则相比utils.bin2c有极快的构建速度.因为它跳过了C生成代码编译步骤,直接生成目标文件(COFF,ELF,MachO)参与链接.
性能对比(120MB文件):
bin2obj:~1.8s
bin2c:~354s
它支持多种架构(x86,ARM,RISCV等)和格式(WindowsCOFF,Linux/AndroidELF,macOS/iOSMachO).

基本用法

target("myapp")set_kind("binary")add_rules("utils.bin2obj",{extensions={".bin",".ico"}})add_files("src/*.c")--//嵌入 data.bin,并确保以零结尾add_files("assets/data.bin",{zeroend=true})

C/C++中访问数据

根据文件名``自动生成符号名(如_binary_<filename>_start_binary_<filename>_end).

#include<stdio.h>#include<stdint.h>externconstuint8_t_binary_data_bin_start[];externconstuint8_t_binary_data_bin_end[];intmain(){//计算大小constuint32_tsize=(uint32_t)(_binary_data_bin_end-_binary_data_bin_start);//访问数据printf("Data size: %u bytes\n",size);for(uint32_ti=0;i<size;i++){printf("%02x ",_binary_data_bin_start[i]);}return0;}

此外,glsl2spvhlsl2spv规则也新增了对bin2obj的支持,可直接按目标文件嵌入编译后的SPIRV文件.

target("test")set_kind("binary")add_rules("utils.glsl2spv",{bin2obj=true})add_files("src/*.c")add_files("src/*.vert","src/*.frag")

Flang``工具链支持

Xmake现在支持LLVMFlang编译器,可更方便地构建Fortran项目.一般,Xmake自动检测并使用系统中可用的Flang``编译器.
你也可手动指定使用Flang``工具链:

$ xmake-f--toolchain=flang $ xmake

或在xmake.lua中配置:

add_rules("mode.debug","mode.release")target("test")set_kind("binary")add_files("src/*.f90")

QtPackAppImage/dmg打包

XPack打包模块现在支持生成Qt部署包,及林操下的AppImage马操下的dmg格式.这使得分发跨平台``GUI应用更加简单.

如,配置一个QtWidget应用的打包:

includes("@builtin/xpack")target("qtapp")add_rules("qt.widgetapp")add_files("src/*.cpp")--//... 其他配置xpack("qtapp")set_formats("nsis","dmg","appimage","zip")set_title("Qt Widget App")add_targets("qtapp")--//根据`格式化`图标on_load(function(package)local scriptdir=os.scriptdir()ifpackage:format()=="appimage"then package:set("iconfile",path.join(scriptdir,"src/assets/xmake.png"))elsepackage:set("iconfile",path.join(scriptdir,"src/assets/xmake.ico"))end end)

执行打包命令:

$ xmake pack

快速检查语法

新增xmake check syntax命令,来快速检测工程源码语法错误.
这一般用在CI流程中,快速检测代码的语法合法性,而不需要完整的编译链接过程,因此速度非常快.

内部原理是:xmake会向编译器传递-fsyntaxonly(GCC/Clang)或/Zs(MSVC)等语法检测标志.

这让编译器分析语法,不生成目标文件,也不链接,从而极大提升了检测速度.

$ xmake check syntax

如果有语法错误,它会报告具体的文件和行号.

MSVCC++动态调试

新增了对MSVCC++动态调试支持(需要MSVC工具集14.44+,仅支持x64).
它与LTCG/PGO/OPTICF不兼容.

set_policy("build.c++.dynamic_debugging",true)

二进制工具库

新增了core.base.binutils模块及utils.binary扩展模块,来处理二进制文件.
它们提供了bin2c,bin2obj,readsyms,deplibs,extractlib功能接口,可用来从二进制文件``生成代码,读取符号,取依赖库及解压静态库等.

import("utils.binary.deplibs")import("utils.binary.readsyms")import("utils.binary.extractlib")--//取依赖库local deps=deplibs("/path/to/bin")--//读取符号local syms=readsyms("/path/to/obj")--//解压`静态库`extractlib("/path/to/lib.a","/path/to/outputdir")

此外,还改进了依赖库解析,静态库合并用到的目标文件泵送,及导出符号功能.

更新CLion插件

最近大量的改进了CLionxmakeidea插件.
尤其是增加了对lldb/gdbdap的调试支持,现在不再需要生成CMakeLists.txt变相支持调试了,而是直接支持调试xmake项目.

另,还修复了运行前没有自动保存的问题,及RunConfiguration配置面板的一些漏洞.
并且,还增加了自动更新``compile_commands.json的支持,以改进C++代码的自动补全和高亮体验.
另,xmake vscode插件最近也增加了对lldb/gdbdap的支持.

更新日志

新特性

1,#7141:支持在安卓禁止nativeappglue
2,#7139:新增安卓本地应用构建支持
3,#7127:binutils新增deplibs支持
4,#7120:binutils新增extractlib支持
5,#7106:MSVC新增/std:c++23preview支持
6,#7105:为glsl/hlsl2spv新增bin2obj支持
7,#7103:新增bin2obj规则(快于bin2c)
8,#7096:新增Flang``工具链支持
9,#7094:新增xmake check syntax支持
10,#7091:MSVC新增动态调试支持
11,#7083:新增对CUDA11~13的支持
12,#7071:新增Qtpack支持
13,#7064:新增林操应用打包的AppImagexpack格式
14,#7062:新增马操应用打包的dmgxpack格式

改进

1,#7149:改进binutils以优化rpath解析
2,#7148:更新Zig示例
3,#7145:改进Clang/LLVM``运行时支持
4,#7136:改进clangcl依赖文件生成
5,#7135:xrepoenv增加sessionID
6,#7155:重构clangcl的窗口ASan支持(运行时链接,链接器标志,PATH/CMAKE_LINKER_TYPE设置,简化工具链)
7,#7109:binutils支持从二进制读取文件符号
8,#7102:改进bin2c规则
9,#7098:重构并改进Golang支持
10,#7095:按标记target/package/toolchain:memcache
11,#7093:改进mirror仓库网径
12,#7088:改进C++/ObjC规则
13,#7087:为策略package.download.http_headers添加类型约束
14,#7069:保存LLVM``工具链Qt规则
15,#7061:更新CI配置
16,#7039:更新macOSCI

漏洞修复

1,#7132:修复允许ASan时的clangcl``工具链问题
2,#7125:修复cosmoccCI
3,#7124:修复Clang``工具链的默认MSVC运行库
4,#7112:修复窗口上的切换目录
5,#7104:修复项目生成器的准备阶段问题
6,#7092:修复Solaris构建
7,#7086:修复QtQML规则中的targetdir设置
8,#7085:修复针对Clang``工具链CMake标志
9,#7084:修复pacmanfind_package
10,#7082:修复ClangCUDA标志检查
11,#7081:修复get_headerunit_key
12,#7074:修复libc++无法找到std模块问题
13,#7067:修复跨工具链get_stdmodules

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 17:11:06

docker compose部署mysql8

docker compose部署mysql8一、配置docker镜像源1.配置镜像源2.重启Docker服务3.验证是否生效二、docker部署mysql81.创建目录结构2.处理权限问题3.创建docker-compose.yml文件4.通过docker compose命令快捷管理容器一、配置docker镜像源 1.配置镜像源 Docker的配置文件通常是…

作者头像 李华
网站建设 2026/3/9 22:25:32

2026必备8个降AI率工具测评榜单

2026必备8个降AI率工具测评榜单 2026年降AI率工具测评&#xff1a;为何需要专业榜单&#xff1f; 随着人工智能技术的迅速发展&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;检测系统在学术和科研领域日益普及&#xff0c;许多学生和研究人员都面临一个共同难题——…

作者头像 李华
网站建设 2026/3/31 11:41:56

基于SpringBoot+Vue智慧旅游服务平台网站系统源码设计与文档

前言 基于 Spring BootVue 的智慧旅游服务平台&#xff0c;聚焦旅游行业数字化转型 “资源整合、智能服务、体验升级” 的核心需求&#xff0c;针对传统旅游服务 “信息分散、服务单一、体验滞后” 的痛点&#xff0c;构建覆盖游客、旅游企业、平台运营者、管理部门的全流程智慧…

作者头像 李华
网站建设 2026/4/3 1:31:53

基于SpringBoot的可追溯果园生产过程管理系统(毕业设计项目源码+文档)

课题摘要 基于 Spring Boot 的可追溯果园生产过程管理系统&#xff0c;聚焦现代农业 “透明化生产、质量可追溯、安全可保障” 的核心需求&#xff0c;针对传统果园管理 “信息不透明、生产过程难监控、质量追溯难实现” 的痛点&#xff0c;构建覆盖果农、果园管理员、监管部门…

作者头像 李华