自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

TBOOX开源工程

专注于c跨平台开发

  • 博客(68)
  • 资源 (12)
  • 收藏
  • 关注

原创 xmake v2.2.2, 让C/C++拥有包依赖自动构建

前言历经四个多月,xmake终于更新了新版本v2.2.2,并且上线了重量级功能:原生支持的远程依赖包管理。而这个特性,其实我陆陆续续写了将近一年的时间,才初步完成,对于此特性的开发进展和历史,有兴趣的同学可以看下相关issues:#69。项目源码官方文档目前的实现效果如下,完全一致的语义版本依赖描述:完全一致的跨平台构建行为,一键xmake编译:完整的项目描述:add_re...

2018-10-17 09:19:07 1816

原创 xmake新增对WDK驱动编译环境支持

xmake v2.2.1新版本现已支持WDK驱动编译环境,我们可以直接在系统原生cmd终端下,执行xmake进行驱动编译,甚至配合vscode, sublime text, IDEA等编辑器+xmake插件去开发WDK驱动。下面是xmake支持的一些编辑器插件,用户可以挑选自己喜欢的编辑器配合xmake来使用:xmake-idea xmake-vscodexmake-sublime ...

2018-06-15 14:16:32 350

原创 xmake新增对Qt编译环境支持

在最新的xmake v2.2.1版本中,新增了对Qt SDK环境的支持,我们完全可以脱离Qt Creater进行Qt应用程序的开发,甚至配合vscode/idea等编辑器+xmake插件(xmake-vscode, xmake-idea …), 用户完全可以切换到自己最常用的编辑器环境中去开发和构建Qt程序,例如这样:通过模板创建空工程xmake内置了一些工程模板可以用来快速创建一个...

2018-05-31 09:17:27 1344

原创 xmake入门,构建项目原来可以如此简单

前言在开发xmake之前,我一直在使用gnumake/makefile来维护个人C/C++项目,一开始还好,然而等项目越来越庞大后,维护起来就非常吃力了,后续也用过一阵子automake系列工具,并不是很好用。由于C/C++程序的构建过程比较繁琐,如果不借助IDE工具,很难快速构建一个新的C/C++程序,想要跨平台构建就更加麻烦了。虽然IDE很好用,也很强大,但是还是有很多不足的地方,...

2018-03-28 20:36:45 4113

转载 xmake新增对Cuda代码编译支持

最近研究了下NVIDIA Cuda Toolkit的编译环境,并且在xmake 2.1.10开发版中,新增了对cuda编译环境的支持,可以直接编译*.cu代码。关于Cuda Toolkit相关说明以及安装文档,可参考官方文档:CUDA Toolkit Documentation。下载安装好Cuda SDK后,在macosx上回默认安装到/Developer/NVIDIA/CUDA-x.x目...

2018-03-23 09:27:50 296

转载 不同编译器对预编译头文件的处理

最近为了给xmake实现预编译头文件的支持,研究了下各大主流编译器处理预编译头的机制以及之间的一些差异。现在的大部分c/c++编译器都是支持预编译头的,例如:gcc,clang,msvc等,用于优化c++代码的编译速度,毕竟c++的头文件如果包含了模板定义的话,编译速度是很慢的, 如果能够吧大部分通用的头文件放置在一个header.h中,在其他源码编译之前预先对其进行编译,之后的代码都能重用...

2018-03-23 09:25:29 368

转载 xmake v2.1.9版本发布,增加可视化图形菜单配置

此版本主要增加xmake f --menu实现用户自定义图形菜单配置,界面风格类似linux的make menuconfig:[图片上传失败…(image-505bc0-1517795319124)]更多使用说明,请阅读:文档手册。项目源码:Github, Gitee.新特性添加del_files()接口去从已添加的文件列表中移除一些文件添加rule(), add_ru...

2018-03-23 09:18:46 229

原创 xmake-vscode插件开发过程记录

最近打算给xmake写一些IDE和编辑器的集成插件,发现vscode的编辑器插件比较容易上手的,就先研究了下vscode的插件开发流程,并且完成了xmake-vscode插件的开发。我们先来看几张最后的效果图:语法高亮和自动补全状态栏要实现上面的效果,其实并不复杂,首先我们先来简单介绍下,vscode的插件开发的基本流程:安装插件开发环境安装cnpm由于国内环境比较复杂,直接用npm安装也许很慢或者

2017-11-17 15:14:00 4915 2

转载 xmake-vscode插件开发过程记录

最近打算给xmake写一些IDE和编辑器的集成插件,发现vscode的编辑器插件比较容易上手的,就先研究了下vscode的插件开发流程,并且完成了xmake-vscode插件的开发。我们先来看几张最后的效果图:语法高亮和自动补全状态栏要实现上面的效果,其实并不复杂,首先我们先来简单介绍下,vscode的插件开发的基本流程:安装插件开发环境安装cnpm由于国内环境比较复杂,直接用npm安装也许很慢或者

2017-10-12 15:04:19 894

转载 xmake新增智能代码扫描编译模式

最近给xmake增加了一个新特性,对于一份工程源码,可以不用编写makefile,也不用编写各种make相关的工程描述文件(例如:xmake.lua,makefile.am, cmakelist.txt等)xmake就可以直接编译他们,这是如何做到的呢,简单来说下实现原理:首先扫描当前目录下,xmake所以支持的所有源代码文件分析代码,检测哪些代码拥有main入口函数所有没有main入口的代码

2017-08-07 11:32:41 591

转载 不同编译器对预编译头文件的处理

最近为了给xmake实现预编译头文件的支持,研究了下各大主流编译器处理预编译头的机制以及之间的一些差异。现在的大部分c/c++编译器都是支持预编译头的,例如:gcc,clang,msvc等,用于优化c++代码的编译速度,毕竟c++的头文件如果包含了模板定义的话,编译速度是很慢的, 如果能够吧大部分通用的头文件放置在一个header.h中,在其他源码编译之前预先对其进行编译,之后的代码都能重用这部分

2017-08-07 11:31:25 764

转载 xmake v2.1.5版本新特性介绍

2.1.5版本现已进入收尾阶段,此版本加入了一大波新特性,目前正在进行稳定性测试和修复,在这里,先来介绍下新版本中引入了哪些新特性和改进。1. 提供类似cmake的find_*系列接口,实现各种查找,例如:find_package, find_library, find_file, ...2. 提供模块接口,实现编译器的各种检测,例如:has_features, has_flags, has_ci

2017-08-07 11:30:21 480

原创 使用xmake优雅地描述工程

描述语法xmake的描述语法基于lua实现,因此描述语法继承了lua的灵活性和简洁性,并且通过28原则,将描述作用域(简单描述)、脚本作用域(复杂描述)进行分离,使得工程更加的简洁直观,可读性非常好。

2017-04-06 13:13:12 5410

转载 使用lua实现try-catch异常捕获

lua原生并没有提供try-catch的语法来捕获异常处理,但是提供了pcall/xpcall等接口,可在保护模式下执行lua函数。因此,可以通过封装这两个接口,来实现try-catch块的捕获机制。我们可以先来看下,封装后的try-catch使用方式:try{ -- try 代码块 function () error("error message") en

2016-12-14 23:41:05 13506

转载 tbox新增stackless协程支持

tbox之前提供的stackfull协程库,虽然切换效率已经非常高了,但是由于每个协程都需要维护一个独立的堆栈, 内存空间利用率不是很高,在并发量非常大的时候,内存使用量会相当大。之前考虑过采用stacksegment方式进行内存优化,实现动态增涨,但是这样对性能还是有一定的影响,暂时不去考虑了。最近参考了下boost和protothreads的stackless协程实现,这种方式虽然易用性和灵活

2016-12-07 15:10:23 1291

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

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

2016-11-21 21:25:28 1144

转载 手写数字识别系统之倾斜矫正

简介倾斜校正主要有两种,一种是整体倾斜校正,另一种是局部倾斜校正。由于本文主要研究具有不规则分布的多数字识别,因此只需要关注经过提取后的数字校正问题,也就是图像的局部校正。矫正算法目前的校正算法有很多,比如说:对于整体倾斜校正可以采用统计图像左右两边的平均像素高度,通过计算整体倾斜度来进行校正。这种方法对于像素较多的图像的处理效果明显,而且实现简单快速,但是对于那些已经经过提取得单一数字图像并不适用

2016-11-17 16:08:48 1732

转载 手写数字识别系统之图像分割

背景本文,主要介绍我之前在学校时候,研究的一些跟手写数字识别相关的技术心得,主要涉及:数字图像处理、特征提取、神经网络等等相关的一些技术。。虽然很多用到的还是网上现有的比较成熟的算法,但是在这些基础上,我还是有做了不少算法上的改进的。。并且为了写这个项目,我当时还特地写了一整套神经网络库,从图像处理开始到最后的识别过程,没有使用任何第三方库,都是从0还是写起 也没有用到opencv啊什么的。上层u

2016-11-17 16:08:00 4514

转载 聊聊原子操作那些事

原子操作,线程间交互数据最细粒度的同步操作,它可以保证线程间读写某个数值的原子性。由于不需要加重量级的互斥锁进行同步,因此非常轻量,而且也不需要在内核间来回切换调度,效率是非常高的。。那如何使用原子操作了,各个平台下都有相关api提供了支持,并且向gcc、clang这些编译器,也提供了编译器级的__builtin接口进行支持windows的Interlockedxxx和Interlockedxxx

2016-11-17 16:07:14 1632

转载 如何通过xmake进行交叉编译

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

2016-11-17 16:06:26 1689 1

转载 手写数字识别系统之数字提取

引言所谓数字分割就是指将经过二值化后的图像中的单个数字区域进行提取的过程。数字分割在数字识别中是一个必不可少的关键步骤,只有能够将数字进行准确的提取,才能将其一一识别。数字分割的方法数字分割的方法相当多,主要有以下几种:基于直方图的分割此类方法就是对每行和每列黑色像素数进行统计,生成行直方图和列直方图,并采用某种阈值选取法分别对图像进行行列分割。这种方法简单快速,对于按矩阵分布的规则数字的分割效果相

2016-11-17 16:05:50 7834 3

转载 线程局部存储tls的使用

线程局部存储(Thread Local Storage,TLS)主要用于在多线程中,存储和维护一些线程相关的数据,存储的数据会被关联到当前线程中去,并不需要锁来维护。。因此也没有多线程间资源竞争问题,那如何去实现TLS存储呢,主要有以下几种方式:gcc和clang的__thread修饰符windows下msvc的__declspec(thread)修饰符pthread库pthread_sets

2016-11-17 16:04:41 1402

转载 复杂多边形光栅化算法

虽然已经一年多没有维护gbox这个图形库项目了,最近确实时间不够用。。。今年的重点是把xmake彻底正好,至少在架构和大功能(包依赖管理)上,要完全落实下来,后期就是零散的维护和插件功能扩展了。。tbox我会陆陆续续一直进行一些小规模更新,明年上半年稍微重构一些模块后,就开始重点重新搞gbox了,这才是我一直最想做,也是最喜欢做的项目了所以我宁愿开发的慢点,也要把它做精,做到最好。。好了,回归正题,

2016-11-17 16:03:48 1979

转载 xmake 描述语法和作用域详解

xmake的工程描述文件xmake.lua虽然基于lua语法,但是为了使得更加方便简洁得编写项目构建逻辑,xmake对其进行了一层封装,使得编写xmake.lua不会像些makefile那样繁琐基本上写个简单的工程构建描述,只需三行就能搞定,例如:target("test") set_kind("binary") add_files("src/*.c")然后只需要执行编译并且运行它:

2016-11-17 16:02:32 642

转载 协程分析之context上下文切换

协程现在已经不是个新东西了,很多语言都提供了原生支持,也有很多开源的库也提供了协程支持。最近为了要给tbox增加协程,特地研究了下各大开源协程库的实现,例如:libtask, libmill, boost, libco, libgo等等。他们都属于stackfull协程,每个协程有完整的私有堆栈,里面的核心就是上下文切换(context),而stackless的协程,比较出名的有protothrea

2016-11-17 16:01:24 14529

转载 tbox协程使用之切换与等待

tbox的协程实现,是stackfull模式的,需要指定独立堆栈和协程函数,目前暂时还不能像golang那样实现堆栈的动态增长,之后会对其进行支持。目前提供下面一些功能特性:1. 提供yield切换调度支持,这个是必须的哈2. 提供suspend(挂起)/resume(恢复)协程接口,不同于yield的是,被suspend后,如果不显示调用resume恢复它,是永远不会被调度到的3. 提供sle

2016-11-17 15:59:45 1999

转载 记boost协程切换bug发现和分析

在分析了各大开源协程库实现后,最终选择参考boost.context的汇编实现,来写tbox的切换内核。在这过程中,我对boost各个架构平台下的context切换,都进行了分析和测试。在macosx i386和mips平台上实现协程切换时,发现boost那套汇编实现是有问题的,如果放到tbox切换demo上运行,会直接挂掉。在分析这两个架构上,boost.context切换实现问题,这边先贴下tb

2016-11-17 15:55:55 2734 1

原创 跨平台自动构建工具v1.0.2 发布

XMake是一个跨平台自动构建工具,支持在各种主流平台上构建项目,类似cmake、automake、premake,但是更加的方便易用,工程描述语法更简洁直观,支持平台更多,并且集创建、配置、编译、打包、安装、卸载、运行于一体。在线文档在线源码支持特性支持windows、mac、linux、ios、android等平台,自动检测不同平台上的编译工具链(也可手动配置) 编译windows项...

2015-07-20 11:22:41 196

一个基于Lua的轻量级自动构建工具

简单的工程描述 target("console") set_kind("binary") add_files("src/*.c") 构建工程 $ xmake 运行目标 $ xmake run console 调试程序 $ xmake run -d console 支持特性 Tasks Macros Actions Options Plugins Templates 支持平台 Windows (x86, x64, amd64, x86_amd64) Macosx (i386, x86_64) Linux (i386, x86_64, cross-toolchains …) Android (armv5te, armv6, armv7-a, armv8-a, arm64-v8a) iPhoneOS (armv7, armv7s, arm64, i386, x86_64) WatchOS (armv7k, i386) Mingw (i386, x86_64) 支持语言 C/C++ Objc/Objc++ Swift Assembly 内置插件 宏记录脚本和回放插件 加载自定义lua脚本插件 生成IDE工程文件插件(makefile, vs2002 - vs2015, …) 生成doxygen文档插件 iOS app2ipa插件

2017-01-19

xmake跨平台自动构建工具

一个可以进行多平台快速构建的工具,类似cmake, gyp,但是不会产生第三方项目文件,更像是make,可以支持一键编译、打包、安装、运行。。 并且可以很方便进行扩展编译平台、扩展插件等等。。 支持windows/linux/macosx/iphones/android等平台进行项目构建,统一的项目描述文档,描述语法采用lua,清晰简洁,比cmake用起来更方便 具体详情可参考: https://github.com/waruqi/xmake

2016-01-18

vim个人配置好的开发环境,支持macosx/linux/windows

个人常用vim的IDE开发环境2015最新版。。 vim的快捷键和常用插件都已配好。。 支持cscope ctag,扩展工具栏,支持各类代码跳转查看。可以完全替代sourceinsight 支持自动编译输出窗口 支持代码符号定义快速预览窗口,需要生成完cscope数据库,按Fx键启用,具体哪个 忘了。。 = = 内置tab自动完成和提示,c/c++成员。声明提示。风格配色比较清新简洁。 字体采用courier new,space 4对齐 右边有buffer栏,函数符号栏, 可以按f2切换到文件树列表 f3 f4:大小写格式化 从F1 按到 f12 会有意外发现哦。。你可以一个个试过来。。哈哈。。 安装简单: 需要提前安装好 vim gvim/mvim cscope ctag 然后解压在当前目录 执行 install 就行了。。 windows下安装只需要吧 windows目录下的文件覆盖过去就好 macosx上是 mvim 哦。。 sourceinsight的代码查看功能启用,按下工具栏某个生成符号数据库的图标,就行了,各类跳转和搜索都有图标,快速使用。 注意:gvim 或vim 必须在源码目录下打开才行,他只会查找当前目录下的所有代码来生成。。 安装完 右击代码文件 系统右键菜单有个script菜单项 的gvim 可以在当前目录下打开代码文件。。 打开一个就可以管理整个工程了。。其他的文件拖进来。。 或者通过f2的目录树访问。。 还有隐藏插件 需要自己按快捷键启用 自己摸索吧。。 比如 文件搜素 图表绘制 matrix动画 。。。 一些集成好的常用插件: 1. tabbar符号列表 2. buffer当前打开文件列表 3. 文件树列表 4. cscope, ctags集成,可进行符号跳转,引用跳转,头文件跳转等。。 5. autotab自动补全 6. c/c++符号提示 7. 静态语法检测 8. 快速翻译 9. 注释绘图 10. 还有好多其他的,暂时想不起来的。。自己摸索吧。。

2016-01-18

gas-preprocessor.pl

转换gcc gas 汇编代码为 ios的gcc编译器 可以直接编译通过的 汇编代码 perl脚本

2013-11-01

syslog for mac

自己开发的mac下终端直接查看iphone/ipad/itouch设备系统日志的工具, 直接命令行输出, 不再需要从 xcode 里面 查看,这个太麻烦, 而且还不能过滤消息。 方便真机调试 使用: 终端下 直接敲: ./syslog.b 就行了 如果要过滤日志: ./syslog.b | grep xxxx

2013-11-01

gvim开发环境

个人常用linux下IDE开发环境。.gvim的配置、快捷键和常用插件都已配好。。 支持cscope ctag,扩展工具栏,支持各类代码跳转查看。可以完全替代sourceinsight 支持自动编译输出窗口 支持代码符号定义快速预览窗口,需要生成完cscope数据库,按Fx键启用,具体哪个 忘了。。 = = 内置tab自动完成,c/c++成员。声明提示。风格配色比较清新。 字体采用courier new,tab 4对齐 右边有buffer栏,符号栏和文件数可以通过f2切换 f3 f4:大小写格式化 从F1 按到 f12 会有意外发现哦。。哈哈。。 安装简单: 需要提前安装好 vim gvim cscope ctag 然后解压在当前目录 执行 install 就行了。。 sourceinsight的代码查看功能启用,按下工具栏某个生成符号数据库的图标,就行了,各类跳转和搜索都有图标,快速使用。注意:gvim 或vim 必须在源码目录下打开才行,他只会查找当前目录下的所有代码来生成。。安装完 右击代码文件 系统右键菜单有个script菜单项 的gvim 可以在当前目录下打开代码文件。。打开一个就可以管理整个工程了。。其他的文件拖进来。。或者通过f2的目录树访问。。 还有隐藏插件 需要自己按快捷键启用 自己摸索吧。。 比如 文件搜素 图表绘制 matrix动画 。。。

2012-01-01

gb2312 unicode 编码转换表

用于查表法 文本编码转换 可用二分查找法实现。。。。

2010-12-16

as文档 ECMA-262

对深入理解as机制 。。。。。。。。。 有很好的帮助

2010-12-16

超级图标管理工具

超级图标管理工具。。。

2008-01-06

图标库2.0

自己收集的图标(40000多个)支持一下...

2008-01-06

C++ Template Metaprogramming

C++模板元编程 英文版(chm)能够将C++玩弄到这地步,我算服了...

2008-01-06

dos程序员参考手册

全面的DOS开发书籍

2007-06-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除