Install on windows
Download xmake source codes
Enter the source code directory
Run install.bat
Select the installed directory and enter into this directory
Please wait some mintues
Install from source codes on linux and macosx
bash
$ git clone git@github.com:waruqi/xmake.git
$ cd ./xmake
$ sudo ./install
Install us
继续阅读 »
xmake默认在编译完程序后,可以通过以下命令运行指定目标程序:
bash
$xmake run [target] [arguments] ...
并且在linux/macosx下面,目前已经支持关联调试器,去直接调试指定目标了,只需要加上-d/--debug参数选项:
bash
$xmake run -d [target] [arguments] ...
默认情况下,xmake在macosx下用的是lldb,在linux下用的是gdb,调试器xmake会在配置的时候去自动检测,如果需要指定调试器路径,可以手动去配置它:
bash
$xmake f --debugger=/usr/bin/gdb
继续阅读 »
如果你只想编译当前主机环境的平台,例如在windows上编译windows版本,在macosx上编译macosx版本,那么你只需要敲以下命令即可:
bash
xmake
因为xmake默认会去检测当前的环境,默认编译当前主机的平台版本,不需要做额外的配置,并且默认编译的是release版本。
如果工程里面有多个目标,那么上面的命令,会去编译所有目标,如果只想编译指定一个目标,例如:test,那么只需执行:
bash
xmake test
如果你想编译debug版本,那么需要做些简单的配置:
bash
xmake config --mode=debug
xmake
xmake针对每个
继续阅读 »
为了进一步提升构建效率,减少没必要的重建,xmake新增了对头文件的依赖检测,以及自动构建仅仅需要重新编译的源文件,提升编译速度,并且完全支持windows、linux、macosx等大部分平台。。
由于检测过程本身也会有一些性能损耗,因此xmake对此进行了深度优化,实现极速依赖检测:
对依赖头文件进行过滤,如果是系统头文件,非自身项目的第三方头文件,自动忽略,这些头文件基本上不会再开发项目的时候,经常变动,所以没必要去每次检测他们,如果真有变动,手动重建下就行了
针对每个头文件的检测结果进行缓存,直接应用到下一个源文件上,减少重复检测的次数
其他一些细节优化
继续阅读 »
xmake在xmake.lua中提供了 $(varname) 的语法,来支持内置变量的获取,例如:
lua
add_cxflags("-I$(buildir)")
它将会在在实际编译的时候,将内置的 buildir 变量转换为实际的构建输出目录:-I./build
并且这些变量在自定义脚本中,也是可以支持的,例如:
lua
target("test")
after_build(target)
print("build ok for $(plat)!")
end
这将会在编译完后,输出:
lua
build ok for macosx!
这些内置变量,大部分都是通过配置的时候,缓存的
继续阅读 »
xmake 在构建程序的时候,会去自动检测系统环境,工程描述等来创建最合适的编译配置来进行编译。。
一般情况下,我们只需要执行:
bash
$ xmake
就行了,并且如果工程描述没有改变,就不会去重新检测和生成配置。。
但是有时候,我们的编译需求千奇百怪,不可能一行xmake就能完全满足我们的需求,例如:我要在macosx上编译android程序了,怎么办
这个时候就需要手动修改配置:
bash
$ xmake f -p android --ndk=~/file/android-ndk
上面是简写,这样会少敲些字符,如果要可读性更好些,可以写全:
bash
$ xmake config --plat=andro
继续阅读 »
原子操作,线程间交互数据最细粒度的同步操作,它可以保证线程间读写某个数值的原子性。
由于不需要加重量级的互斥锁进行同步,因此非常轻量,而且也不需要在内核间来回切换调度,效率是非常高的。。
那如何使用原子操作了,各个平台下都有相关api提供了支持,并且向gcc、clang这些编译器,也提供了编译器级的__builtin接口进行支持
windows的Interlockedxxx和Interlockedxxx64系列api
macosx的OSAtomicXXX系列api
gcc的__sync_val_compare_and_swap和__sync_val_compare_and_swap_8等__builtin接口
x86和x86_
继续阅读 »
说明
本文只记录macOSX系统,其它系统参考官网
more
安装
HomeBrew安装
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install node
安装包
官网下载最新安装包即可
更新
HomeBrew安装的node
brew upgrade node
其它方式安装的node
使用node的包管理工具n
sudo npm cache clean -f
sudo npm install -g n
sudo n stable
继续阅读 »
此版本主要增加stackless协程模块以及为嵌入式平台增加micro微模块编译(~64K)。
此stackless协程模块比之前的stackfull协程实现更加的轻量高效,切换效率提升5、6倍,在macosx上测试1000w次切换仅需40ms
当然易用性和灵活性上,还是stackfull模式更有优势(tbox两种模式都已支持,接口类似)。
stackless协程使用见:stackless协程使用文档
stackfull协程使用见:stackfull协程使用文档
更多协程服务器demo实现,请参考:协程examples
新特性
针对协程上下文切换,支持mips架构
添加__tb_thread_local__关键字宏
添加
继续阅读 »
Introduction
Benchbox is a benchmark testing utilities based on xmake and tbox.
Build
Please install xmake first: xmake
bash
$ xmake
The Coroutine Switch Reports (2 Coroutines)
Run
bash
$ xmake coroutine -n switch
Macosx (x86_64)
tbox: 10000000 switches in 205 ms, 48780487 switches per sec
继续阅读 »