最近在xmake中,用lua的协程实现了多任务编译,效果还是不错的,不过后来发现一个问题:
如果所有编译进程都在处理编译,没有退出的时候,xmake的lua主进程会不断地在这些任务间,不停的切换轮询进程的状态,但是有没有机会执行其他任务,导致cpu过高,抢占了编译进程的cpu时间。。
那如果在等不到完成的进程时候,加入sleep等待呢,又会导致编译速度变慢,没法合理利用cpu。。
因此,为了解决这个问题,我打算扩展下lua的接口,实现了一个跨平台的多进程等待接口: process.waitlist 实现多个未完成进程的同时等待,让出xmake主进程的cpu时间,给其他编译进程充分利用
xmake中的lua代码如下:
```
继续阅读 »
task是xmake 2.0开始新增的特性,也是插件开发的核心,在 插件开发之hello xmake 中我们简单介绍了下task的定义和使用
当然task不仅可以用来写插件,而且还可以写一些简单的自定义任务。。
我们先看下一个简单task实现:
```lua
-- 定义一个名叫hello的task任务
task("hello")
-- task运行的入口
on_run(function ()
-- 显示hello xmake!
print("hello xmake!")
end)
```
这是一个最简单的task,相比插件task,它少了对 set
继续阅读 »
xmake 提供了一些内置的比较实用的插件,其中宏脚本插件是最具有代表性和实用性的,也是xmake比较推荐的一款插件,那它有哪些使用功能呢?
我们先来看下:xmake macro --help
```
Usage: xmake macro|m [options] [name] [arguments]
继续阅读 »
You can use xmake to run the given target and need not know where is the target program.
e.g.
We define a simple target with named 'test'.
lua
target("test")
set_kind("console")
add_files("*.c")
So, we can run it directly.
bash
$xmake r test
or $xmake run test
xmake will compile it
继续阅读 »
首先我们通过内置的工程模板创建一个空工程:
```bash
$ xmake create -P ./hello
create hello ...
create ok!👌
```
这个时候xmake将会产生一些工程文件,如下:
```bash
$ cd ./hello
$ tree .
.
├── src
│ └── main.c
└── xmake.lua
```
这个简单的程序仅仅只是为了打印输出: hello xmake!
```bash
$ cat ./src/main.c
include
int main(int argc, char** argv)
{
printf("hello xmak
继续阅读 »
We create an empty console project first:
```bash
$ xmake create -P ./hello
create hello ...
create ok!👌
```
And xmake will generate some files:
```bash
$ cd ./hello
$ tree .
.
├── src
│ └── main.c
└── xmake.lua
```
It is a simple console program only for printing hello xmake!
```bash
$ cat ./src/main.c
incl
继续阅读 »
xmake将依赖库、依赖头文件、依赖类型、依赖接口统一用 option 选项机制进行了封装,更在上一层引入package包的机制,使得添加和检测依赖更加的模块化,简单化。。。
下面通过一个具体实例,来看下xmake的包机制怎么使用。。
假如你现在的工程已经有了两个包:zlib.pkg,polarssl.pkg(如何构建包,后续会详细说明,现在可以参考TBOX依赖包下已有包的例子),你的工程目录结构如下:
demo
- xmake.lua
- src
main.c
- pkg
zlib.pkg
polarssl.pkg
那么你可以修改xmake.lua来使用上述的两个依赖包:
继续阅读 »
xmake-sublime插件深度集成了xmake和sublime text,提供方便快速的跨平台c/c++构建。
注:使用此插件,需要先安装xmake,更多关于xmake的使用说明,请阅读:文档手册,项目源码:Github。
特性
快速开始
语法色彩高亮
API输入自动提示和补全
状态栏信息
完整的命令列表
快速配置支持
构建和运行
快速宏记录和回放
编译错误提示和跳转
快速开始
编译错误提示和跳转
继续阅读 »
如果你想在同一个target上既编译静态库,又能编译动态库,那么稍微修改下 xmale.lua就行了:
```lua
add_target("test")
-- 设置编译target的类型,之前是:static/shared,现在改成动态的
set_kind("$(kind)")
-- 添加文件
add_files(*.c)
```
好了,现在默认编译的时候,会生成静态库:libtest.a
如果你想生成动态库,只需要执行:
```bash
简写
xmake f -k shared
或者
xmake config --kind=shared
编译
xmake
```
继续阅读 »
content
{:toc}
注:此处为镜像文档,最新在线文档请看:http://xmake.io/#/zh/
xmake
一个基于Lua的轻量级跨平台自动构建工具
简介
XMake是一个
继续阅读 »