关闭
当前搜索:

xmake-vscode插件开发过程记录

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

xmake-vscode插件开发过程记录

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

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

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

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

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

xmake v2.1.5版本新特性介绍

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

使用xmake优雅地描述工程

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

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

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

tbox新增stackless协程支持

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

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

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

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

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

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

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

聊聊原子操作那些事

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

如何通过xmake进行交叉编译

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

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

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

线程局部存储tls的使用

线程局部存储(Thread Local Storage,TLS)主要用于在多线程中,存储和维护一些线程相关的数据,存储的数据会被关联到当前线程中去,并不需要锁来维护。。因此也没有多线程间资源竞争问题,那如何去实现TLS存储呢,主要有以下几种方式: gcc和clang的__thread修饰符 windows下msvc的__declspec(thread)修饰符 pthread库pthread_sets...
阅读(396) 评论(0)
20条 共2页1 2 下一页 尾页
    个人资料
    • 访问:30653次
    • 积分:417
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:18篇
    • 译文:0篇
    • 评论:0条
    文章分类
    最新评论