为了让xmake更好得支持交叉编译,这个版本我重构了整个工具链,使得工具链的切换更加的方便快捷,并且现在用户可以很方便地在xmake.lua中扩展自己的工具链。
关于平台的支持上,我们新增了对*BSD系统的支持,另外,此版本还新增了一个ninja主题风格,实现类似ninja的编译进度显示
新特性介绍
工具链改进
工具链和平台完全分离
之前的版本,平台和工具链绑定的过于紧密,例如xmake f -p windows 平台,默认只能使用msvc的编译,想要切到clang或者其他编译器,就只能走交叉编译平台:xmake f -p cross。
但是这样的话,一些windows平台特有的设置就丢失了,而且用户也没法使用if is_plat("windows") then来判断windows平台做特定的设置。
其实平台和工具链是完全可以独立开来的,新版本经过重构后,即使是windows平台以及其他任何平台,也可以方便快速的切换到clang, llvm等其他工具链。
$ xmake f -p windows --toolchain=clang
内置工具链
虽然xmake的交叉编译配置支持所有工具链,也提供一定程度的智能分析和工具链探测,但通用方案多少对特定工具链支持需要追加各种额外的配置,例如额外传递一些--ldflags=, --cxflags=参数什么的。
而新版本xmake内置了一些常用工具链,可以省去交叉编译工具链复杂的配置过程,只需要传递工具链名到--toolchain=xxx即可。
切换到llvm工具链:
$ xmake f -p cross --toolchain=llvm --sdk="C:\Program Files\LLVM"
$ xmake
切换到GNU-RM工具链:
$ xmake f -p cross --toolchain=gnu-rm --sdk=/xxx/cc-arm-none-eabi-9-2019-q4-major
$ xmake
就可以快速切换的指定的交叉编译工具链,对于内置的工具链,可以省去大部分配置,通常只需要--toolchain=和--sdk=即可,其他的配置都会自动设置好,确保编译正常。
那xmake还支持哪些内置工具链呢?我们可以通过下面的命令查看:
$ xmake show -l toolchains
xcode Xcode IDE
vs VisualStudio IDE
yasm The Yasm Modular Assembler
clang A C language family frontend for LLVM
go Go Programming Language Compiler
dlang D Programming Language Compiler
sdcc Small Device C Compiler
cuda CUDA Toolkit
ndk Android NDK
rust Rust Programming Language Compiler
llvm A collection of modular and reusable compiler and toolchain technologies
cross Common cross compilation toolchain
nasm NASM Assembler
gcc GNU Compiler Collection
mingw Minimalist GNU for Windows
gnu-rm GNU Arm Embedded Toolchain
envs Environment variables toolchain
fasm Flat Assembler
更新内容
新特性
#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符号问题
更多详情见全文:
https://tboox.org/cn/2020/06/05/xmake-update-v2.3.4/--
FROM 43.225.87.*