2017-07-31 ruki
最近为了给xmake实现预编译头文件的支持,研究了下各大主流编译器处理预编译头的机制以及之间的一些差异。 现在的大部分c/c++编译器都是支持预编译头的,例如:gcc,clang,msvc等,用于优化c++代码的编译速度,毕竟c++的头文件如果包含了模板定义的话,编译速度是很慢的, 如果能够吧大部分通用的头文件放置在一个header.h中,在其他源码编译之前预先对其进行编译,之后的代码都能重用这部分预编译头,就可以极大程度上减少频繁的头文件冗余编译。 但是不同编译器对它的支持力度和处理方式,还是有很大差异的,并不是非常通用,在xmake中封装成统一的接口和使用方式,还是费了很大的功夫才搞定。 msvc的预编译头处理 预编译头 继续阅读 »
2016-07-18 ruki
xmake默认情况下是不会去生成pdb文件,就算是debug编译,启用了调试符号: lua set_symbols("debug") 也是不会生成额外的pdb文件,它会把所有调试符号内置到程序里面,如果要独立生成pdb文件,可以对xmake.lua进行如下修改: ```lua -- 先禁用内置的调试符号开关 --set_symbols("debug") -- 静态库目标 target("test") set_kind("static") -- 仅针对windows平台 if is_plat("windows") then -- 启用pdb生成 add_cxflags("-ZI", "-Fd$(bui 继续阅读 »
2016-07-12 ruki
为了进一步提升构建效率,减少没必要的重建,xmake新增了对头文件的依赖检测,以及自动构建仅仅需要重新编译的源文件,提升编译速度,并且完全支持windows、linux、macosx等大部分平台。。 由于检测过程本身也会有一些性能损耗,因此xmake对此进行了深度优化,实现极速依赖检测: 对依赖头文件进行过滤,如果是系统头文件,非自身项目的第三方头文件,自动忽略,这些头文件基本上不会再开发项目的时候,经常变动,所以没必要去每次检测他们,如果真有变动,手动重建下就行了 针对每个头文件的检测结果进行缓存,直接应用到下一个源文件上,减少重复检测的次数 其他一些细节优化 继续阅读 »
2016-10-28 ruki
简介 Benchbox是一个基准测试包,基于tbox和xmake,里面包含许多针对第三方库功能的性能基准测试和对比,可以很方便的扩展测试用例和模块。 目前内置:各大开源协程库性能基准测试,后续还会陆续增加各种开源库模块的分析测试 测试报告仅供参考,测试代码或者结果上如有问题,可以提交issues 编译 请先安装: xmake 然后运行: bash $ xmake 协程切换测试报告(2个协程) Run bash $ xmake coroutine -n switch Macosx (x86_64) tbox: 10000000 switches in 205 ms, 4 继续阅读 »
2020-11-19 ruki
LTUI is a lua-based cross-platform character terminal UI interface library. This framework is derived from the requirement of graphical menu configuration in xmake, similar to the menuconf of linux kernel to configure compilation parameters, so based on curses and lua, a complete set of cross- The character terminal u 继续阅读 »
2016-07-18 ruki
xmake provides the grammar: $(varname) for supporting builtin variable. .e.g lua add_cxflags("-I$(buildir)") It will translate this variable to the real value when building. -I$(buildir) => -I./build We can also use these variables in the custom scripts. lua target("test") after_build(target) print 继续阅读 »
2016-07-16 ruki
xmake provides some api, which can detect whether exist some library functions. ```lua target("test") -- checks some libc functions from the header files: wchar.h and stdlib.h add_cfuncs("libc", nil, {"wchar.h", "stdlib.h"}, "wcscat", 继续阅读 »
2017-10-11 ruki
最近打算给xmake写一些IDE和编辑器的集成插件,发现vscode的编辑器插件比较容易上手的,就先研究了下vscode的插件开发流程,并且完成了xmake-vscode插件的开发。 我们先来看几张最后的效果图: 语法高亮和自动补全 状态栏 继续阅读 »
2016-06-09 ruki
import的主要用于导入xmake的扩展类库以及一些自定义的类库模块,一般用于 自定义脚本(on_build, on_run ..)、插件开发、模板开发、平台扩展、自定义任务task等地方。 导入机制如下: 优先从当前脚本目录下导入 再从扩展类库中导入 导入的语法规则: 基于.的类库路径规则,例如: 导入core核心扩展模块 ```lua import("core.base.option") import("core.project") import("core.project.task") import("core") function main() -- 获取参数选项 继续阅读 »
2020-10-19 ruki
LTUI是一个基于lua的跨平台字符终端UI界面库。 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套跨平台的字符终端ui库。 而样式风格基本上完全参照的kconfig-frontends,当然用户也可以自己定制不同的ui风格。 另外,LTUI是完全跨平台的,windows上的terminal终端也是完全支持的,在windows上ltui会采用pdcurses来进行窗口绘制。 Github 更新内容 新版本中,我们主要增加了对鼠标事件的支持,除了 curses/ncurses,我们还对 windows 上 pdcurses 也 继续阅读 »