news 2026/6/15 12:28:14

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/6/15 10:25:10

什么是‘智能法律助手’:构建一个支持多轮反问、证据提取、合规对比的‘递归式’合同审查图

各位法律科技的探索者、编程的实践者们&#xff0c;大家好。今天&#xff0c;我们将深入探讨一个前沿且充满挑战的领域&#xff1a;构建一个智能法律助手。我们所构想的这个助手&#xff0c;并非仅仅停留在关键词搜索或简单的信息提取层面&#xff0c;而是要能支持多轮反问、精…

作者头像 李华
网站建设 2026/6/15 10:21:41

基于SpringBoot的就业推荐系统(毕业设计项目源码+文档)

课题摘要基于 Spring Boot 的就业推荐系统&#xff0c;聚焦高校就业服务 “精准匹配、高效对接、个性化指导” 的核心需求&#xff0c;针对传统就业推荐 “信息不对称、匹配度低、指导滞后” 的痛点&#xff0c;构建覆盖毕业生、用人单位、就业指导中心的全流程就业服务生态。系…

作者头像 李华
网站建设 2026/6/15 10:25:50

Java房屋租赁收租系统vue3

目录Java房屋租赁收租系统&#xff08;Vue3前端&#xff09;摘要开发技术核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&am…

作者头像 李华
网站建设 2026/6/15 10:29:41

SQL必会必知整理-16-全文本搜索

16.1 理解全文本搜索 并非所有引擎都支持全文本搜索&#xff0c;MySQL支持几种基本的数据库引擎。并非所有的引擎都支持本书所描述的全文本搜索。两个最常使用的引擎为MyISAM和InnoDB&#xff0c;前者支持全文本搜索&#xff0c;而后者不支持。这就是为什么虽然本书中创建的多数…

作者头像 李华
网站建设 2026/6/15 10:26:57

ZetaChain 跨链原子性解析: 技术机制、生态展望与开发实战

作者&#xff1a; OpenBuild 内容团队&#xff0c; ZetaChain 团队 TL;DR Web3 跨链交互长期面临生态碎片化与跨链原子性缺失的挑战&#xff0c;这对依赖自动化决策且难以自行处理复杂异常回滚的 AI Agent 而言是极大障碍。ZetaChain 通过通用 EVM&#xff08;Universal EVM&…

作者头像 李华