news 2026/2/8 11:47:09

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/2/8 0:22:01

大数据领域数据合规:提升竞争力的关键

大数据领域数据合规&#xff1a;提升竞争力的关键关键词&#xff1a;数据合规、大数据、隐私保护、数据治理、企业竞争力、GDPR、个人信息保护法摘要&#xff1a;在数据成为“新型石油”的今天&#xff0c;企业如何合法、安全地挖掘数据价值&#xff1f;本文将从“数据合规”这…

作者头像 李华
网站建设 2026/2/7 14:52:30

ollama部署本地模型

ollama本地部署deepseek模型使用ollama拉取目标模型查看本地模型测试模型能否正常对话使用curl命令测试模型使用ollama拉取目标模型 ollama pull deepseek-r1:7b如图所示 查看本地模型 ollama list可以看到deepseek-rz:7b已经下载下来了 测试模型能否正常对话 ollama ru…

作者头像 李华
网站建设 2026/2/4 15:47:25

基于SpringBoot协同过滤兼职推荐小程序源码设计与文档

前言基于 Spring Boot 的协同过滤兼职推荐小程序&#xff0c;聚焦灵活就业与兼职市场 “供需精准匹配、高效对接、安全保障” 的核心需求&#xff0c;针对传统兼职市场 “信息不对称、匹配度低、交易风险高” 的痛点&#xff0c;构建覆盖兼职求职者、用工方、平台运营者的全流程…

作者头像 李华
网站建设 2026/2/8 9:24:42

分时电价环境下用户负荷需求响应分析方法Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

作者头像 李华