2026/2/13 12:38:57
网站建设
项目流程
mysql做网站,怎么做58网站吊车网,yy刷单做的那些网站,设计企业网站内容新特性介绍
安卓本地应用构建支持
新版本进一步改进支持了构建安卓本地应用.现在可在android.native_app规则中配置更多参数,包括android_sdk_version,android_manifest,android_res,keystore等.
此外,对需要自定义入口和事件循环的场景(如游戏引擎集成),支持设置native_app_gl…新特性介绍安卓本地应用构建支持新版本进一步改进支持了构建安卓本地应用.现在可在android.native_app规则中配置更多参数,包括android_sdk_version,android_manifest,android_res,keystore等.此外,对需要自定义入口和事件循环的场景(如游戏引擎集成),支持设置native_app_gluefalse来禁止默认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(c17)add_files(src/main.cpp,src/android_native_app_glue.c)add_syslinks(log)add_packages(raylib)add_rules(android.native_app,{android_sdk_version35,android_manifestandroid/AndroidManifest.xml,android_resandroid/res,keystoreandroid/debug.jks,keystore_pass123456,package_namecom.raylib.custom_glue,native_app_gluefalse,--//禁止默认 gluelogcat_filters{raydemo_custom_glue,raylib}})bin2obj规则新增的utils.bin2obj规则相比utils.bin2c有极快的构建速度.因为它跳过了C生成代码和编译步骤,直接生成目标文件(COFF,ELF,MachO)参与链接.性能对比(120MB文件):bin2obj:~1.8sbin2c:~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,{zeroendtrue})在C/C中访问数据根据文件名自动生成符号名(如_binary_filename_start和_binary_filename_end).#includestdio.h#includestdint.hexternconstuint8_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_ti0;isize;i){printf(%02x ,_binary_data_bin_start[i]);}return0;}此外,glsl2spv和hlsl2spv规则也新增了对bin2obj的支持,可直接按目标文件嵌入编译后的SPIRV文件.target(test)set_kind(binary)add_rules(utils.glsl2spv,{bin2objtrue})add_files(src/*.c)add_files(src/*.vert,src/*.frag)Flang工具链支持Xmake现在支持LLVMFlang的编译器,可更方便地构建Fortran项目.一般,Xmake会自动检测并使用系统中可用的Flang编译器.你也可手动指定使用Flang工具链:$ xmake-f--toolchainflang $ xmake或在xmake.lua中配置:add_rules(mode.debug,mode.release)target(test)set_kind(binary)add_files(src/*.f90)QtPack与AppImage/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 scriptdiros.scriptdir()ifpackage:format()appimagethen 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动态调试新增了对MSVC的C的动态调试支持(需要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 depsdeplibs(/path/to/bin)--//读取符号local symsreadsyms(/path/to/obj)--//解压静态库extractlib(/path/to/lib.a,/path/to/outputdir)此外,还改进了依赖库解析,静态库合并用到的目标文件泵送,及导出符号功能.更新CLion插件最近大量的改进了CLion的xmakeidea插件.尤其是增加了对lldb/gdbdap的调试支持,现在不再需要生成CMakeLists.txt去变相支持调试了,而是直接支持调试xmake项目.另,还修复了运行前没有自动保存的问题,及RunConfiguration配置面板的一些漏洞.并且,还增加了自动更新compile_commands.json的支持,以改进C代码的自动补全和高亮体验.另,xmake vscode插件最近也增加了对lldb/gdbdap的支持.更新日志新特性1,#7141:支持在安卓禁止nativeappglue2,#7139:新增安卓本地应用构建支持3,#7127:binutils新增deplibs支持4,#7120:binutils新增extractlib支持5,#7106:MSVC新增/std:c23preview支持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增加sessionID6,#7155:重构clangcl的窗口ASan支持(运行时链接,链接器标志,PATH/CMAKE_LINKER_TYPE设置,简化工具链)7,#7109:binutils支持从二进制读取文件符号8,#7102:改进bin2c规则9,#7098:重构并改进Golang支持10,#7095:按公标记target/package/toolchain:memcache11,#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:修复cosmoccCI3,#7124:修复Clang工具链的默认MSVC运行库4,#7112:修复窗口上的切换目录5,#7104:修复项目生成器的准备阶段问题6,#7092:修复Solaris构建7,#7086:修复QtQML规则中的targetdir设置8,#7085:修复针对Clang工具链的CMake标志9,#7084:修复pacman的find_package10,#7082:修复ClangCUDA标志检查11,#7081:修复get_headerunit_key12,#7074:修复libc无法找到std模块问题13,#7067:修复跨工具链的get_stdmodules