lua

插件使用之加载自定义lua脚本

xmake里面的lua脚本加载插件,可以让你方便调试和编写一些自定义的lua脚本,这个时候xmake就是一个纯lua的加载引擎。。例如,我想写个简单的hello xmake!的lua脚本,可以自己建个 hello.lua 文件,编写如下脚本:function main()print("hello xmake!")endmain是入口函数,就跟平常写c类似,然后加载执行下这个

Wireshark EtherCAT解析插件开发日志

本日志主要是记录学习wireshark插件开发的过程,以便以后查看,以及供像我一样对wireshark插件开发不了解的朋友的参考。最近在学习ethercat协议,但是目前wireshark中的ethercat插件没有对从站(ESC)的寄存器进行解析(从git log来看新版的会增加),所以需要增加寄存器解析这一部分。The Tao Of Fieldbus里提供了一个有ESC

基于lua的跨平台构建工具:make v2.0.2 发布!

更新内容此版本主要修复一些bug和兼容性问题。。改进修改安装和卸载的action处理更新工程模板增强函数检测Bugs修复7: 修复用模板创建工程后,target名不对问题:'[targetname]'9: 修复clang不支持c++11的问题修复api作用域泄露问题修复在windows上的一些路径问题修复检测宏函数失败问题修复检测工具链失败问题修复windows上编译and

make插件开发之色彩高亮显示

最近没事,玩了玩终端的色彩高亮输出,顺带着对xmake也进行了支持。。目前xmake在开发插件脚本的时候,除了可以使用lua内置的print进行终端输出外,还可以通过另外一个接口:cprint实现终端的色彩高亮输出例如:cprint('${bright}hello xmake')cprint('${red}hello xmake')cprint('${bright gree

如何快速构建一个简单的程序

首先我们通过内置的工程模板创建一个空工程:$ xmake create -P ./hellocreate hello ...create ok!:ok_hand:这个时候xmake将会产生一些工程文件,如下:$ cd ./hello$ tree ..├── src│   └── main.c└── xmake.lua这个简单的程序仅仅只是为了打印输出: hello xmak

利用make运行和调试程序

xmake默认在编译完程序后,可以通过以下命令运行指定目标程序: xmake run [target] [arguments] ... 并且在linux/macosx下面,目前已经支持关联调试器,去直接调试指定目标了,只需要加上-d/--debug参数选项: xmake run -d [target] [arguments] ... 默认情况下,xmake在macosx下用

多进程等待的跨平台实现

最近在xmake中,用lua的协程实现了多任务编译,效果还是不错的,不过后来发现一个问题:如果所有编译进程都在处理编译,没有退出的时候,xmake的lua主进程会不断地在这些任务间,不停的切换轮询进程的状态,但是有没有机会执行其他任务,导致cpu过高,抢占了编译进程的cpu时间。。那如果在等不到完成的进程时候,加入sleep等待呢,又会导致编译速度变慢,没法合理利用cpu。

内置变量与原生shell脚本运行

xmake在xmake.lua中提供了 $(varname) 的语法,来支持内置变量的获取,例如:add_cxflags("-I$(buildir)")它将会在在实际编译的时候,将内置的 buildir 变量转换为实际的构建输出目录:-I./build并且这些变量在自定义脚本中,也是可以支持的,例如:target("test")after_build(target)prin

make编译配置过程详解

xmake 在构建程序的时候,会去自动检测系统环境,工程描述等来创建最合适的编译配置来进行编译。。一般情况下,我们只需要执行:$ xmake就行了,并且如果工程描述没有改变,就不会去重新检测和生成配置。。但是有时候,我们的编译需求千奇百怪,不可能一行xmake就能完全满足我们的需求,例如:我要在macosx上编译android程序了,怎么办这个时候就需要手动修改配置:$ x

如何通过make进行交叉编译

xmake 提供了方便灵活的交叉编译支持,大部分情况下,都不需要配置很复杂的toolchains前缀,例如:arm-linux- 什么的只要这个toolchains目录满足如下结构(大部分的交叉工具链都是这个结构):/home/toolchains_sdkdir - bin - arm-linux-gcc - arm-linux-ld