[转]:xmake v2.0.3 版本更新

2016-07-17
阅读 1 分钟
2.3k
更新内容 新特性 增加头文件依赖自动检测和增量编译,提高编译速度 在终端中进行颜色高亮提示 添加调试器支持,xmake run -d program ... 改进 增强运行shell的系列接口 更新luajit到v2.0.4版本 改进makefile生成插件,移除对xmake的依赖,并且支持windows/linux/macosx等大部分pc平台 优化多任务编译速度,在windows下...

[转]:如何快速构建一个简单的程序

2016-07-16
阅读 9 分钟
3.2k
首先我们通过内置的工程模板创建一个空工程: {代码...} 这个时候xmake将会产生一些工程文件,如下: {代码...} 这个简单的程序仅仅只是为了打印输出: hello xmake! {代码...} xmake.lua是基于lua语法的工程描述文件,它很简单: {代码...} 现在我们开始编译这个程序 {代码...} 接着运行它: {代码...} 或者进行调试 {代码...

[转]:利用xmake运行和调试程序

2016-07-16
阅读 1 分钟
3.2k
默认情况下,xmake在macosx下用的是lldb,在linux下用的是gdb,调试器xmake会在配置的时候去自动检测,如果需要指定调试器路径,可以手动去配置它:

[转]:xmake插件开发之色彩高亮显示

2016-07-14
阅读 2 分钟
2.7k
目前xmake在开发插件脚本的时候,除了可以使用lua内置的print进行终端输出外,还可以通过另外一个接口:cprint实现终端的色彩高亮输出

[转]:插件使用之加载自定义lua脚本

2016-07-07
阅读 1 分钟
4.8k
xmake里面的lua脚本加载插件,可以让你方便调试和编写一些自定义的lua脚本,这个时候xmake就是一个纯lua的加载引擎。。 例如,我想写个简单的hello xmake!的lua脚本,可以自己建个 hello.lua 文件,编写如下脚本: {代码...} main是入口函数,就跟平常写c类似,然后加载执行下这个lua脚本就行了: {代码...} 下面在来个...

[转]:基于lua的跨平台构建工具:xmake v2.0.2 发布!

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

[转]:xmake后期发展随想

2016-06-25
阅读 2 分钟
3.7k
随着xmake v2.0.1 版本的发布,这大半年的辛苦总算告一段落,这个版本我基本上重构整个项目的90%的代码,几乎算是重写了,但结果还算挺满意的。。

[转]:xmake高级特性之选项绑定

2016-06-22
阅读 1 分钟
2.2k
什么是选项的绑定呢? 例如我想在命令行中配置一个smallest的参数:xmake f --smallest=y 这个时候,需要同时禁用多个其他的选项开关,来禁止编译多个模块,就是这个需求,相当于一个选项 与其他 多个选项之间 是有联动效应的。。 那如何实现呢,可以通过下面两个api来实现: add_bindings: 添加正向绑定 add_rbindings:...

[转]:xmake插件开发之类库使用

2016-06-21
阅读 3 分钟
3.4k
xmake通过import接口,可以在自定义脚本中导入各种内置类库和扩展类库模块,使得xmake的插件开发具有更多的灵活性,提供更丰富的功能。

[转]:xmake插件开发之import类库

2016-06-21
阅读 1 分钟
2.2k
import的主要用于导入xmake的扩展类库以及一些自定义的类库模块,一般用于 自定义脚本(on_build, on_run ..)、插件开发、模板开发、平台扩展、自定义任务task等地方。

[转]:xmake插件使用之宏脚本记录

2016-06-20
阅读 5 分钟
3.6k
xmake 提供了一些内置的比较实用的插件,其中宏脚本插件是最具有代表性和实用性的,也是xmake比较推荐的一款插件,那它有哪些使用功能呢?

[转]:xmake高级特性之自定义task任务

2016-06-20
阅读 1 分钟
3k
task是xmake 2.0开始新增的特性,也是插件开发的核心,在 插件开发之hello xmake 中我们简单介绍了下task的定义和使用 当然task不仅可以用来写插件,而且还可以写一些简单的自定义任务。。 我们先看下一个简单task实现: {代码...} 这是一个最简单的task,相比插件task,它少了对 set_menu 的设置,当然你也可以加上,好...

[转]:xmake插件开发之hello xmake

2016-06-20
阅读 2 分钟
2.9k
macro: 这个很实用,宏脚本插件,可以手动录制多条xmake命令并且回放,也可以通过脚本实现一些复杂的宏脚本,这个我们后续会更加详细的介绍

自定义流的实现和使用

2016-03-17
阅读 8 分钟
2.5k
tbox中提供了常用的一些stream模块,例如:data、file、http、sock等,可以通过指定不同的url,使用相同的接口进行数据流的读写,非常的方便。

[转]:TBOX中的线程池设计和实现

2016-01-18
阅读 3 分钟
2.9k
由于每个task的函数实现不会太多,所以可以根据每个task的函数地址做hash,统计出每个task执行所花费的平均时间。然后根据这个平均值来动态计算每个worker一次拉取的task的数量,TBOX里面默认每个worker一次拉取10s的task量,这样可以尽可能的避免worker间锁的频繁抢占。

[转]:tbox中vector容器的使用

2016-01-14
阅读 3 分钟
2.2k
tbox的vector容器沿用了stl库中vector的命名,说白了就是以数组方式存储元素,也是整个容器库中最基础的容器之一。 当然,在c中用tbox的vector跟用stl的vector其实差不了太多,用起来都很方便。 先看个简单的例子熟悉下: {代码...} 里面的tb_for_all是用迭代器遍历容器,这个对所有的容器都支持,具体使用可以参考:迭...

[转]:利用bloom filter算法处理大规模数据过滤

2016-01-11
阅读 5 分钟
6.7k
Bloom Filter是由Bloom在1970年提出的一种快速查找算法,通过多个hash算法来共同判断某个元素是否在某个集合内。可以用于网络爬虫的url重复过滤、垃圾邮件的过滤等等。

用tbox实现内存检测

2016-01-11
阅读 9 分钟
3.5k
TBOX的内存分配在调试模式下,可以检测支持内存泄露和越界,而且还能精确定位到出问题的那块内存具体分配位置,和函数调用堆栈。 1. 内存泄露检测 内存泄露的检测必须在程序退出的前一刻,调用tb_exit()的时候,才会执行,如果有泄露,会有详细输出到终端上。 {代码...} 输出: {代码...} 2. 内存越界检测 越界溢出的检...

用c实现跨平台异常捕获机制

2016-01-10
阅读 1 分钟
2.5k
TBOX封装了一套跨平台的异常捕获实现,来模拟windows的seh异常处理功能,而且是线程安全的。 在linux/mac下的实现 使用signal 捕获异常信号 使用sigsetjmp保存现场寄存器和信号掩码,出现异常后使用 siglongjmp 跳转到异常处理过程,并恢复状态 使用线程局部存储维护 sigjmpbuf 寄存器现场状态堆栈,保证多线程安全,并...

[转]:xmake依赖包的添加和自动检测机制

2016-01-09
阅读 3 分钟
3.2k
xmake将依赖库、依赖头文件、依赖类型、依赖接口统一用 option 选项机制进行了封装,更在上一层引入package包的机制,使得添加和检测依赖更加的模块化,简单化。。。

[转]:静态库和动态库的编译切换

2016-01-09
阅读 2 分钟
3.7k
如果你想在同一个target上既编译静态库,又能编译动态库,那么稍微修改下 xmale.lua就行了: {代码...} 好了,现在默认编译的时候,会生成静态库:libtest.a 如果你想生成动态库,只需要执行: {代码...} 配置成动态库模式,重建下就行了。。参数:-k/--kind 可以手动在配置的时候指定,需要编译的target类型,实际会去...

[转]:利用正则实现匹配和替换

2016-01-09
阅读 3 分钟
2.9k
tbox里面针对三个正则库(pcre/pcre2/posix)进行了封装,实现接口统一和跨平台处理,只要xmake在编译配置的时候自动检测到其中一种库,就可以使用了,一般会优先使用pcre2。

[转]:xmake高级特性之批量检测库函数

2016-01-05
阅读 8 分钟
3.2k
有时候可能用到某个库的某些函数接口,但是这个库有可能在某个平台上被裁减过了,接口支持不全,如果你想跨平台使用,就会出问题 因此在使用之前进行检测是否存在这个函数,还是很有必要的,xmake提供了方便的api,可以批量检测某个库的一些函数: 例如: {代码...} 可以执行:xmake f -v 看到实际的检测信息,这里随便...

[转]:xmake高级特性之自定义脚本使用

2016-01-04
阅读 5 分钟
2.9k
xmake提供了自定义打包、安装、运行脚本,可以更加灵活的针对个人实际需求来操作xmake 这里用一个例子详细说明下,比如有个需求,我需要自动编译、安装、运行android app工程,并且能够支持jni可以进行如下操作 首先创建个基于ant的android app工程,目录结构如下: {代码...} -- 添加一个android app的测试demo {代码.....

[转]:xmake高级特性之合并静态库

2016-01-04
阅读 1 分钟
3.9k
xmake的add_files接口不仅可以添加源代码文件进行编译,还可以直接添加.o/obj对象文件、以及.a/lib的库文件到编译目标中,这个跟add_links是有区别的

[转]:tbox中内存池架构

2016-01-04
阅读 8 分钟
4.3k
整个内存分配的最底层,都是基于large_pool的大块内存分配池,类似于linux的基于page的分配管理,不过有所不同的是,large_pool并没有像linux那样使用buddy算法进行(2^N)*page进行分配,这样如果需要2.1m的内存,需要分配4m的内存块,这样力度太大,非常浪费。

[转]:xmake工程描述入门

2016-01-02
阅读 1 分钟
6.6k
xmake的工程描述文件,摈弃了makefile的繁琐复杂,借鉴了premake的简洁明了,原生支持lua脚本,使得更加的灵活、方便扩展。 工程默认描述文件名为xmake.lua,支持多级目录嵌套,也可以通过以下命令,指定其他文件作为工程描述文件: {代码...} 下面先来看一个最简单的例子: {代码...} 怎么样简单吧,这样就已经完成了一...

使用xmake编译工程

2016-01-01
阅读 3 分钟
4.5k
如果你只想编译当前主机环境的平台,例如在windows上编译windows版本,在macosx上编译macosx版本,那么你只需要敲以下命令即可:

xmake高级特性之自定义选项

2016-01-01
阅读 4 分钟
4.1k
我们想在自己的工程中增加一个新开关选项:hello, 如果这个开关被启用,会在target中添加特定的一些源码文件,但是这个开挂默认是不被启用的,需要通过配置xmake f --hello=true才会被链接和使用