xmake v2.1.4版本更新,增加交互式命令执行(REPL)

2017-05-10 ruki 更多博文 » 博客 » GitHub »

xmake lua 版本更新

原文链接 https://waruqi.github.io/2017/05/10/update-v2.1.4.cn/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


概述

此次更新,主要增强xmake lua插件,支持交互式命令执行(read-eval-print, REPL)以及一些稳定性问题修复。

有时候在交互模式下,运行命令更加的方便测试和验证一些模块和api,也更加的灵活,不需要再去额外写一个脚本文件来加载。

我们先看下,如何进入交互模式:

# 不带任何参数执行,就可以进入
$ xmake lua
>

# 进行表达式计算
> 1 + 2
3

# 赋值和打印变量值
> a = 1
> a
1

# 多行输入和执行
> for _, v in pairs({1, 2, 3}) do
>> print(v)
>> end
1
2
3

我们也能够通过 import 来导入扩展模块:

> task = import("core.project.task")
> task.run("hello")
hello xmake!

如果要中途取消多行输入,只需要输入字符:q 就行了

> for _, v in ipairs({1, 2}) do
>> print(v)
>> q             <--  取消多行输入,清空先前的输入数据
> 1 + 2
3

详细更新信息,可参考下面的更新细节:

新特性

  • #68: 增加$(programdir)$(xmake)内建变量
  • 添加is_host接口去判断当前的主机环境
  • #79: 增强xmake lua,支持交互式解释执行

改进

  • 修改菜单选项颜色
  • #71: 针对widows编译器改进优化选项映射
  • #73: 尝试获取可执行文件路径来作为xmake的脚本目录
  • add_subdirs中的子xmake.lua中,使用独立子作用域,避免作用域污染导致的干扰问题
  • #78: 美化非全屏终端窗口下的xmake --help输出
  • 避免产生不必要的.xmake目录,如果不在工程中的时候

Bugs修复

  • #67: 修复 sudo make install 命令权限问题
  • #70: 修复检测android编译器错误
  • 修复临时文件路径冲突问题
  • 修复os.host, os.arch等接口
  • 修复根域api加载干扰其他子作用域问题
  • #77: 修复cprint色彩打印中断问题

简介

XMake是一个基于Lua的轻量级跨平台自动构建工具,支持在各种主流平台上构建项目

xmake的目标是开发者更加关注于项目本身开发,简化项目的描述和构建,并且提供平台无关性,使得一次编写,随处构建

它跟cmake、automake、premake有点类似,但是机制不同,它默认不会去生成IDE相关的工程文件,采用直接编译,并且更加的方便易用 采用lua的工程描述语法更简洁直观,支持在大部分常用平台上进行构建,以及交叉编译

并且xmake提供了创建、配置、编译、打包、安装、卸载、运行等一些actions,使得开发和构建更加的方便和流程化。

不仅如此,它还提供了许多更加高级的特性,例如插件扩展、脚本宏记录、批量打包、自动文档生成等等。。

如果你想要了解更多,请参考:

简单的工程描述

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
  • Golang
  • Rust
  • Dlang

内置插件

  • 宏记录脚本和回放插件
  • 加载自定义lua脚本插件
  • 生成IDE工程文件插件(makefile, vs2002 - vs2017, ...)
  • 生成doxygen文档插件
  • iOS app2ipa插件

构建演示

build_demo