基于 Lua 的跨平台构建工具 XMake

基于 Lua 的跨平台构建工具 XMake

Apache License 2.0
跨平台
2015-07-16
ruki

简介

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

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

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

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

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

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

                         _        
    __  ___ __  __  __ _| | ______ 
    \ \/ / |  \/  |/ _  | |/ / __ \
     >  <  | \__/ | /_| |   <  ___/
    /_/\_\_|_|  |_|\__ \|_|\_\____| 

                         by ruki, tboox.org

安装

使用curl

bash <(curl -fsSL https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.sh)

使用wget

bash <(wget https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.sh -O -)

使用powershell

Invoke-Expression (Invoke-Webrequest 'https://raw.githubusercontent.com/tboox/xmake/master/scripts/get.ps1' -UseBasicParsing).Content

简单的工程描述

包依赖描述

官方的xmake包管理仓库: xmake-repo

构建工程

$ xmake

运行目标

$ xmake run console

调试程序

$ xmake run -d console

配置平台

$ xmake f -p [windows|linux|macosx|android|iphoneos ..] -a [x86|arm64 ..] -m [debug|release]
$ xmake

图形化菜单配置

$ xmake f --menu

包依赖管理

支持平台

  • Windows (x86, x64)
  • 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
  • Cuda

工程类型

  • 静态库程序
  • 动态库类型
  • 控制台程序
  • Cuda程序
  • Qt应用程序
  • WDK驱动程序
  • WinSDK应用程序

内置插件

宏记录脚本和回放插件

$ xmake m -b                        # 开始记录
$ xmake f -p iphoneos -m debug
$ xmake 
$ xmake f -p android --ndk=~/files/android-ndk-r16b
$ xmake
$ xmake m -e                        # 结束记录
$ xmake m .                         # 回放命令

加载自定义lua脚本插件

$ xmake l ./test.lua
$ xmake l -c "print('hello xmake!')"
$ xmake l lib.detect.find_tool gcc

生成IDE工程文件插件(makefile, vs2002 - vs2017, ...)

$ xmake project -k vs2017 -m "debug,release"

生成doxygen文档插件

$ xmake doxygen [srcdir]

更多插件

请到插件仓库进行下载安装: xmake-plugins.

IDE和编辑器插件

更多例子

Debug和Release模式:

add_rules("mode.debug", "mode.release")

target("console")
    set_kind("binary")
    add_files("src/*.c") 
    if is_plat("windows", "mingw") then
        add_defines("XXX")
    end

自定义脚本:

target("test")
    set_kind("static")
    add_files("src/*.cpp")
    after_build(function (target)
        print("build %s ok!", target:targetfile())
    end)

使用扩展模块:

target("test")
    set_kind("shared")
    add_files("src/*.c")
    on_load(function (target)
        import("lib.detect.find_package")
        target:add(find_package("zlib"))
    end)

项目例子

一些使用xmake的项目:

演示视频

联系方式

的码云指数为
超过 的项目
加载中

评论(8)

卧龙大熊猫
卧龙大熊猫
很棒的工具
fasiondog
fasiondog
很好用,赞!放弃b2转投xmake
ruki
ruki 软件作者
#XMake# 新增WDK驱动编译环境支持,http://tboox.org/cn/2018/06/14/support-wdk/
D
DevStudio
您好,如何扩展xmake,使它可以支持别的语言,例如:Ada;使它支持别的平台,比如 VxWorks PowerPC,自己指定编译器?
ruki
ruki 软件作者
#XMake# 还差3 star 谁帮忙补下。。:)
ruki
ruki 软件作者
#XMake# xmake for vscode插件体验版。。欢迎试用。。https://github.com/tboox/xmake-vscode
ruki
ruki 软件作者
#XMake# 录了个演示视频,https://asciinema.org/a/133693 ,刚忘记放链接了 = =
ruki
ruki 软件作者
#XMake# 录了个演示视频
ruki
ruki 软件作者
ruki
ruki 软件作者
需要跨平台构建c/c++程序的,可以试试 #XMake# 哦。。http://xmake.io 后续会有更多新特性更新。。:)

xmake v2.2.7 发布,改进 Cuda 项目构建

这个版本主要对Cuda项目的构建做了很多的改进,并且新增了对lex/yacc编译支持,同时也对target新增了on_link, before_link和after_link等链接阶段的定制化支持。 这里,我还要感谢下@Opport...

06/20 09:05

xmake v2.2.6 发布, Qt/Android编译支持

这个版本主要对远程依赖包的支持进一步完善,并且新增了对clib包依赖的支持,另外现在xmake已经能够直接编译Qt/Android项目,并且可以直接生成apk包,以及安装到设备支持。 此版本还对xmake...

06/03 08:26

xmake v2.2.5,更加完善的 C/C++ 包依赖管理

此版本耗时四个多月,对包依赖管理进行了重构改进,官方仓库新增了mysql,ffmpeg等常用依赖包,并且新增了大量新特性。 目前内置的包管理已经支持的非常完善了,我们可以通过 add_requires...

04/02 08:53

xmake v2.2.3 发布, 大量新特性支持

此版本主要是对远程依赖包管理进行了一些改进,并且新增了很多小特性,并且此版本已经可以支持通过xmake update来自我更新升级了,以后升级xmake将会更加方便。 关于新特性的详细说明见文章下...

2018/11/30 10:00

xmake v2.2.2 发布, 让C/C++拥有包依赖自动构建

历经四个多月,xmake终于更新了新版本v2.2.2,并且上线了重量级功能:原生支持的远程依赖包管理。 而这个特性,其实我陆陆续续写了将近一年的时间,才初步完成,对于此特性的开发进展和历史,...

2018/10/17 08:56

xmake 2.2.1 发布,Qt、WDK 和 Cuda 编译环境支持

xmake 2.2.1 已发布,该版本主要对自定义规则 rule ,进行了大规模升级。 现在用户可以通过自定义规则,来实现各种编译规则,并且 xmake 也内置了一些常用的编译规则,可以直接应用到当前工程...

2018/06/18 07:52

xmake v2.1.9 发布,增加可视化图形菜单配置

xmake v2.1.9 发布了。此版本主要改进提供用户自定义菜单配。 此版本主要增加xmake f --menu实现用户自定义图形菜单配置,界面风格类似linux的make menuconfig: 新特性 添加del_files()接口...

2018/02/05 07:41

xmake v2.1.8发布,改进对 IDE 和编辑器插件的支持

xmake v2.1.8 发布了。此版本主要改进对IDE和编辑器插件的支持,目前xmake提供以下编辑器和IDE插件: Vim 编辑器插件 xmake.vim (第三方插件,感谢@luzhlon提供) Visual Studio Code 编辑器插...

2017/11/09 09:25

XMake v2.1.7 版本发布,稳定性修复和细节改进

此版本主要修复一些稳定性问题,并且对一些细节进行改进优化,并且提供xmake-vscode插件深度集成vscode编辑器环境。 更多使用说明,请阅读:文档手册。 项目源码:Github, Gitee. 新特性 添加...

2017/10/16 09:55

XMake v2.1.6 发布,稳定性修复和编译改进

此版本主要修复一些稳定性问题。 更多使用说明,请阅读:文档手册。 项目源码:Github, Gitee. 改进 改进add_files,支持对files粒度进行编译选项的各种配置,更加灵活。 从依赖的target和o...

2017/08/17 11:02

没有更多内容

加载失败,请刷新页面

1
回答
如何将自己的开源软件提交到ubuntu等各大国外源中收录

自己有几个工具类的开源项目,想提交到 ubuntu等国外的官方源中去,这样以后提供给别人下载安装也方便了。。 但是不知道这个申请流程是怎样的,还是需要满足...

2016/01/01 16:29

没有更多内容

加载失败,请刷新页面

没有更多内容

xmake v2.2.2, 让C/C++拥有包依赖自动构建

前言 历经四个多月,xmake终于更新了新版本v2.2.2,并且上线了重量级功能:原生支持的远程依赖包管理。 而这个特性,其实我陆陆续续写了将近一年的时间,才初步完成,对于此特性的开发进展和...

2018/10/26 11:35
33
0
xmake新增对Qt编译环境支持

在最新的v2.2.1预览版本中,新增了对Qt SDK环境的支持,我们完全可以脱离Qt Creater进行Qt应用程序的开发,甚至配合vscode/idea等编辑器+xmake插件 用户完全可以切换到自己最常用的编辑器环境...

2018/05/31 09:20
28
0
项目构建工具

1、C、C++ 自动化构建工具 CMake自动构建工程 Hello GYP GN 快速入门指南 XMake是一个基于Lua的轻量级跨平台自动构建工具

2017/08/23 19:18
29
0
xmake新增对WDK驱动编译环境支持

[xmake](https://github.com/tboox/xmake) v2.2.1新版本现已支持WDK驱动编译环境,我们可以直接在系统原生cmd终端下,执行xmake进行驱动编译,甚至配合vscode, sublime text, IDEA等编辑器+...

2018/06/15 14:14
233
0
LTUI v1.1, 一个基于lua的跨平台字符终端UI界面库

简介 LTUI是一个基于lua的跨平台字符终端UI界面库。 此框架源于xmake中图形化菜单配置的需求,类似linux kernel的menuconf去配置编译参数,因此基于curses和lua实现了一整套跨平台的字符终端...

2018/11/29 09:40
25
0
依赖包的添加和自动检测机制

xmake将依赖库、依赖头文件、依赖类型、依赖接口统一用 option 选项机制进行了封装,更在上一层引入package包的机制,使得添加和检测依赖更加的模块化,简单化。。。 利用包的机制,可以让你...

2015/07/20 13:00
83
0
基于 xmake,助力打造跨平台 C/C++依赖包生态

xmake集成了内置的远程包依赖管理,用户只需要简单地在项目中添加自己所需要的包和版本,即可自动下载和集成对应的包到项目中,并且实现编译和链接。 例如: add_requires("libuv master", "...

08/12 09:22
699
1
xmake集成了内置的远程包依赖管理

  xmake集成了内置的远程包依赖管理,用户只需要简单地在项目中添加自己所需要的包和版本,即可自动下载和集成对应的包到项目中,并且实现编译和链接。      例如:      add_req...

08/12 09:31
0
0
JS阻止页面关闭笔记

window.isCloseHint = true; //初始化关闭 window.addEventListener("beforeunload", function(e) { if (window.isCloseHint) { var confirmationMessage = "要记得保存!你确定...

2018/01/25 10:46
50
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部