xmake v2.1.9版本发布,增加可视化图形菜单配置
此版本主要增加xmake f --menu实现用户自定义图形菜单配置,界面风格类似linux的make menuconfig:
[图片上传失败…(image-505bc0-1517795319124)]
更多使用说明,请阅读:文档手册。
新特性
- 添加
del_files()接口去从已添加的文件列表中移除一些文件 - 添加
rule(),add_rules()接口实现自定义构建规则,并且改进add_files("src/*.md", {rule = "markdown"}) - 添加
os.filesize()接口 - 添加
core.ui.xxx等cui组件模块,实现终端可视化界面,用于实现跟用户进行短暂的交互 - 通过
xmake f --menu实现可视化菜单交互配置,简化工程的编译配置 - 添加
set_values接口到option - 改进option,支持根据工程中用户自定义的option,自动生成可视化配置菜单
- 在调用api设置工程配置时以及在配置菜单中添加源文件位置信息
改进
- 改进交叉工具链配置,通过指定工具别名定向到已知的工具链来支持未知编译工具名配置, 例如:
xmake f --cc=gcc@ccmips.exe - #151: 改进mingw平台下动态库生成
- 改进生成makefile插件
- 改进检测错误提示
- 改进
add_cxflags等flags api的设置,添加force参数,来禁用自动检测和映射,强制设置选项:add_cxflags("-DTEST", {force = true}) - 改进
add_files的flags设置,添加force域,用于设置不带自动检测和映射的原始flags:add_files("src/*.c", {force = {cxflags = "-DTEST"}}) - 改进搜索工程根目录策略
- 改进vs环境探测,支持加密文件系统下vs环境的探测
- 升级luajit到最新2.1.0-beta3
- 增加对linux/arm, arm64的支持,可以在arm linux上运行xmake
- 改进vs201x工程生成插件,更好的includedirs设置支持
Bugs修复
- 修复依赖修改编译和链接问题
- #151: 修复
os.nuldev()在mingw上传入gcc时出现问题 - #150: 修复windows下ar.exe打包过长obj列表参数,导致失败问题
- 修复
xmake f --cross无法配置问题 - 修复
os.cd到windows根路径问题
新特性介绍
新增del_files接口实现从源文件列表中删除指定文件
通过此接口,可以从前面add_files接口添加的文件列表中,删除指定的文件,例如:
target("test")
add_files("src/*.c")
del_files("src/test.c")
上面的例子,可以从`src`目录下添加除`test.c`以外的所有文件,当然这个也可以通过`add_files(“src/*.c|test.c”)`来达到相同的目的,但是这种方式更加灵活。
例如,我们可以条件判断来控制删除哪些文件,并且此接口也支持[add_files](http://xmake.io/#/zh/manual?id=targetadd_files)的匹配模式,过滤模式,进行批量移除。
target("test")
add_files("src/**.c")
del_files("src/test*.c")
del_files("src/subdir/*.c|xxx.c")
if is_plat("iphoneos") then
add_files("xxx.m")
end
通过上面的例子,我们可以看出`add_files`和`del_files`是根据调用顺序,进行顺序添加和删除的,并且通过`del_files(“src/subdir/*.c|xxx.c”)`删除一批文件,
并且排除`src/subdir/xxx.c`(就是说,不删除这个文件)。
通过rule()接口实现用户自定义编译规则
在2.1.9版本之后,xmake不仅原生内置支持多种语言文件的构建,而且还可以通过自定义构建规则,让用户自己来实现复杂的未知文件构建。
我们可以通过预先设置规则支持的文件后缀,来扩展其他文件的构建支持:
-- 定义一个markdown文件的构建规则
rule("markdown")
set_extensions(".md", ".markdown")
on_build(function (target, sourcefile)
os.cp(sourcefile, path.join(target:targetdir(), path.basename(sourcefile) .. ".html"))
end)
target("test")
set_kind("binary")
-- 使test目标支持markdown文件的构建规则
add_rules("markdown")
-- 添加markdown文件的构建
add_files("src/*.md")
add_files("src/*.markdown")
我们也可以指定某些零散的其他文件作为markdown规则来处理:
target("test")
-- ...
add_files("src/test/*.md.in", {rule = "markdown"})
通过`add_files(“*.md”, {rule = “markdown”})`方式指定的规则,优先级高于`add_rules(“markdown”)`设置的规则。
我们还可以实现规则的级联构建,例如在构建man规则后,继续调用markdown规则,实现级联构建:
rule("man")
add_imports("core.project.rule")
on_build(function (target, sourcefile)
rule.build("markdown", target, sourcefile)
end)
对于有些文件,需要支持多文件构建生成单一对象的模式,可以通过on_build_all来实现:
rule("man")
on_build_all(function (target, sourcefiles)
-- build some source files
for _, sourcefile in ipairs(sourcefiles) do
-- ...
end
end)
target("test")
-- ...
add_files("src/test/*.doc.in", {rule = "man"})
通过xmake f --menu实现可视化菜单配置
之前的版本,使用option可实现命令行菜单选项的用户自定义,当工程配置相当多的情况下,采用这种命令行配置的方式就不是很灵活了。
因此在2.1.9版本中,我们扩展了option,使其原生支持xmake f --menu的图形化配置界面,实现复杂的分级配置,并且支持配置的模糊查找和定位,配置项目更加灵活方便。
我们可以通过set_category设置option的分级路径名set_category("root/submenu/submenu2"),例如:
-- 'boolean' option
option("test1")
set_default(true)
set_showmenu(true)
set_category("root menu/test1")
-- 'choice' option with values: "a", "b", "c"
option("test2")
set_default("a")
set_values("a", "b", "c")
set_showmenu(true)
set_category("root menu/test2")
-- 'string' option
option("test3")
set_default("xx")
set_showmenu(true)
set_category("root menu/test3/test3")
-- 'number' option
option("test4")
set_default(6)
set_showmenu(true)
set_category("root menu/test4")
上述配置最后显示的菜单界面路径结构:
- root menu
- test1
- test2
- test3
- test3
- test4
效果图如下:
[图片上传失败…(image-4d2cb7-1517795319124)]
并且我们还可以通过set_values,提供选项值列表供用户快速选择使用,例如:
option("test")
set_default("b")
set_showmenu(true)
set_values("a", "b", "c")
效果图如下:
[图片上传失败…(image-818f30-1517795319124)]
搜索用户配置
[图片上传失败…(image-ac806e-1517795319124)]
原文出处:http://tboox.org/cn/2018/02/03/update-v2.1.9/
xmake v2.1.9版本发布,增加可视化图形菜单配置的更多相关文章
- xmake v2.1.5版本正式发布,大量新特性更新
此版本带来了大量新特性更新,具体详见:xmake v2.1.5版本新特性介绍. 更多使用说明,请阅读:文档手册. 项目源码:Github, Gitee. 新特性 #83: 添加 add_csnippe ...
- Arthas 3.1.2 版本发布 | 增加 logger/heapdump/vmoption 命令
最近偶尔有用户反馈某些 HTTP 接口出现超时问题,而 web 服务端的 Trace 监控没有出现 http 返回值为 503 等异常情况.出现这种情况一般是web容器出现问题,客户端连 Arthas ...
- xmake v2.1.5版本新特性介绍
2.1.5版本现已进入收尾阶段,此版本加入了一大波新特性,目前正在进行稳定性测试和修复,在这里,先来介绍下新版本中引入了哪些新特性和改进. 1. 提供类似cmake的find_*系列接口,实现各种查找 ...
- 发布日志 - kratos v2.1.0 版本发布
github https://github.com/go-kratos/kratos/releases/tag/v2.1.0 新的功能 新增客户端负载均衡器(load balancing)和路由选择器 ...
- 发布日志 - kratos v2.0.4 版本发布
V2.0.4 Release Release v2.0.4 · go-kratos/kratos (github.com) 新的功能 proto-gen-http 工具在生产代码时如果 POST/PU ...
- 发布日志 - kratos v2.0.5 版本发布
V2.0.5 Release Release v2.0.5 · go-kratos/kratos (github.com) 修复问题 proto errors when swagger api imp ...
- xmake v2.3.7 发布, 新增 tinyc 和 emscripten 工具链支持
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...
- xmake v2.3.4 发布, 更加完善的工具链支持
为了让xmake更好得支持交叉编译,这个版本我重构了整个工具链,使得工具链的切换更加的方便快捷,并且现在用户可以很方便地在xmake.lua中扩展自己的工具链. 关于平台的支持上,我们新增了对*BSD ...
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布
(新年巨献) RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布 历时数月,RDIFramework.NET V2.8版本发布了,感谢大家的支持. RDIFram ...
随机推荐
- json反序列化与pickle的用法
json反序列化与pickle 一.定义 序列化:将内存中的不可持久化和传输对象转换为可方便持久化和传输对象的过程. 反序列化:将可持久化和传输对象转换为不可持久化和传输对象的过程. 二. 应用场景 ...
- ZX树初步
一些数据结构,比如线段树或平衡树,他们一般是要么维护每个元素在原序列中的排列顺序,要么是维护每个元素的大小顺序,若是像二者兼得那么就想想主席树. 给你多个不同的数字问你1-N第K大的数是多少 最简单的 ...
- [效率神技]Intellij 的快捷键和效率技巧|系列一|常用快捷键
Intellij 是个功能强大的IDE,这里只讲window下社区版的Intellij. 1. 常用快捷: Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ct ...
- systemd 相关及服务启动失败原因
1 查看启用的units systemctl list-unit-files | grep enabled 2 查看指定服务的日志 按服务单元过滤 journalctl -u j 查看j.serv ...
- 对table最后一行显示与隐藏
//显示table最后一行,如果用block的话,可能会影响到页面的样式 $("#table tr").get($("#table tr").length - ...
- 【串线篇】spring boot嵌入式Servlet容器启动原理;
什么时候创建嵌入式的Servlet容器工厂?什么时候获取嵌入式的Servlet容器并启动Tomcat: 获取嵌入式的Servlet容器工厂: 1).SpringBoot应用启动运行run方法 2).r ...
- HTML/CSS实现文字环绕图片布局
原文: https://blog.csdn.net/yiyelanxin/article/details/75006925 在一个图文并茂的网页上,文字环绕图片可以使布局美观紧凑,如何实现呢?有两种办 ...
- 使用git管理文件版本
创建版本库 什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以 ...
- 2016.5.21【初中部 NOIP提高组】模拟赛A 总结
这次比赛的题目看上去好像不难,但当开始仔细想的时候才发现,并没有那么简单. T1旅行:刚开始看到k<=4的时候还以为有题可以AC了,不过呢,还是毫无思路. T3Pty爬山:雨天的尾巴最近打了几道 ...
- vue中的:is
is string | Object (组件的选项对象) <div id="app"> <span>这是:is的案例</span> <co ...