之前的版本对编译控制粒度,只能到target这一级:
```lua
-- 全局根配置,所有target都会被影响
add_defines("ROOT")
target("test")
-- target目标配置,只对test目标下的所有源文件编译生效
add_defines("TEST")
add_files("src/*.c")
```
最近给2.1.6开发版本中的add_files进行了改进,支持基于files更细粒度的编译选项控制,例如:
lua
target("test")
add_defines("TEST1")
add_files("src/*.c")
add_files("test/*
继续阅读 »
为了进一步裁剪tbox,更好的适配嵌入式开发平台,tbox新增了--micro=y的微模块编译选项
如果启用此编译选项,那么只会编译tbox里面较轻量的一些模块,是的编译后的库大小,尽量保证在64K左右。
先来讲讲一些跟库大小相关的编译选项:
* `--smallest=y`: 通用平台,最小编译模式,会禁用所有第三方依赖库,禁用所有扩展模块,启用最小化编译优化(库内部也会尽可能节省内存使用)
* `--micro=y`: 专门针对嵌入式平台设计,仅编译最为轻量的一些模块,启用最小化编译优化(有可能会包含一些可选组件)
smallest和micro的区别在于,即使启用了smallest禁用所有扩展模块,但是还是会内置比m
继续阅读 »
此版本主要修复一些稳定性问题。
更多使用说明,请阅读:文档手册。
项目源码:Github, Gitee.
改进
改进add_files,支持对files粒度进行编译选项的各种配置,更加灵活。
从依赖的target和option中继承links和linkdirs。
改进target.add_deps接口,添加继承配置,允许手动禁止依赖继承,例如:add_deps("test", {inherit = false})
移除tbox.pkg二进制依赖,直接集成tbox源码进行编译
Bugs修复
修复目标级联依赖问题
修复target:add和option:add问题
修复在archlinux上的编译和安装问题
修复/ZI的兼容性
继续阅读 »
之前xmake默认编译windows目标,debug模式下采用的是-Z7编译选项,内置的调试符号信息到obj文件里面
但是这种方式按msdn的文档上说,是属于旧式的调试符号文件格式,所以为了考虑后续的兼容性,xmake修改了默认的调试符号生成规则,
改为默认启用pdb符号文件,并且pdb的方式更为常用。。
这个行为的修改,并不会影响到xmake.lua的设置,如果在这个文件中,设置了启用调试符号:
lua
set_symbols("debug")
那么,编译debug版本的目标时,就会自动生成pdb文件,以tbox为例:
bash
$ xmake f -m debug
$ xmake
编译完成后,会自动在build
继续阅读 »
新特性
为解释器作用域增加一些内建模块支持
针对windows x64平台,支持ml64汇编器
改进
增强ipairs和pairs接口,支持过滤器模式,简化脚本代码
为vs201x工程生成增加文件filter
移除core/tools目录以及msys工具链,在windows上使用xmake自编译core源码进行安装,优化xmake源码磁盘空间
移除xmake/packages,默认模板安装不再内置二进制packages,暂时需要手动放置,以后再做成自动包依赖下载编译
Bugs修复
修复msvc的编译选项不支持问题:-def:xxx.def
修复ml.exe汇编器脚本
修复选项链接顺序问题
继续阅读 »
什么是选项的绑定呢?
例如我想在命令行中配置一个smallest的参数:xmake f --smallest=y
这个时候,需要同时禁用多个其他的选项开关,来禁止编译多个模块,就是这个需求,相当于一个选项 与其他 多个选项之间 是有联动效应的。。
那如何实现呢,可以通过下面两个api来实现:
add_bindings: 添加正向绑定
add_rbindings: 添加反向绑定
继续阅读 »
新特性
增加smallest参数配置选项,实现一键配置最小化编译,禁用所有扩展模块和依赖库
增加进程创建和控制接口
改进
增强环境变量设置接口
修改xmake.lua支持最新版xmake v2.x, 简化编译配置
Bugs修复
修复ltimer定时器不准问题
修复asio部分内存泄露问题
修复asio/httpd在linux下keepalive模式,响应很慢问题
修复windows下路径处理的一些bug
继续阅读 »
xmake还可以支持一些自定义选项开关,使得工程支持可选编译,方便工程的模块化管理。
增加自定义编译开关
我们拿一个实际的例子来说:
我们想在自己的工程中增加一个新开关选项:hello, 如果这个开关被启用,会在target中添加特定的一些源码文件,但是这个开挂默认是不被启用的,需要通过配置xmake f --hello=true才会被链接和使用
并且使用的时候,需要定义一些特殊的宏定义:-DHELLO_TEST -DHELLO_ENABLE
那么我们开始进行xmake.lua修改,过程并不复杂:
在xmake.lua的头部通过option接口定义一个名叫hello的开关选项
```lua
--定义一个名叫hello的
继续阅读 »
概述
此版本主要增强了vs201x工程的生成,以及支持vs2017编译环境,并且针对archlinux提供更加方便的aur安装。
项目主页
查看文档
详细更新内容如下:
新特性
添加aur打包脚本,并支持用yaourt包管理器进行安装。
添加set_basename接口,便于定制化修改生成后的目标文件名
改进
支持vs2017编译环境
支持编译android版本的rust程序
增强vs201x工程生成插件,支持同时多模式、架构编译
Bugs修复
修复编译android程序,找不到系统头文件问题
修复检测选项行为不正确问题
#57: 修复代码文件权限到0644
构建演示
继续阅读 »
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
继续阅读 »