前言
对于lua的构建 官方默认使用make工具, 常见的构建工具有:
Make:又指GNU Make, 是Linux系统下的通用构建工具, 延伸的构建工具还有nmake,dmake,cmake,xmake等等Scons: 以python语言编写的一款跨平台构建工具 对标make容易学习快速上手Ant: 基于java的构建工具, 被认为是make工具的替代品, 早期eclipse采用的构建工具就是它maven: 同样是基于java, 它不单单是构建工具 还是项目管理工具, 属于Ant进化版, 目前Idea平台中java的构建基本用的就是它Gradle:基于Groovy的构建工具, 被认为是Ant和Maven的替代品, 目前Android编译使用的构建工具就是它
什么是构建工具
以java程序为例, 我们在写好代码后, 需要使用javac指令对源码进行编译, 然后使用java指令执行
这个过程叫做编译, 如果一两个文件还好, 代码文件一多, 手动敲指令进行编译是会死人的🤪, 于是乎自动化的构建工具出现了, 目的就是为了取代人工编译
构建工具的发展
早期的make–>java的ant–>后来的maven–>现在的gradle
每一代构建工具的诞生, 都是为了解决上一代工具存在的痛点
Gradle, 用过的都说好!!😆
对Lua源码进行构建编译
我这边直接使用Android Studio, 具体步骤如下:
首先 去
lua官网下载源码, 这里我使用的是5.4的源码
然后 在Studio中新建一个空工程, 然后将
lua源码拖进src目录中
紧接着 对
build.gradle文件进行配置lua一共包含两个可执行文件, 一个是lua另一个是luac, 所以这两个执行文件我们需要分开构建, 具体的gradle配置如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41apply plugin: 'c' //使用c构建模式
model {
components {
//创建一个lua执行文件构建入口
lua(NativeExecutableSpec) {
sources {
c {//指定源码位置以及需要包含和排除的问价
source {
srcDir "src/main/c/lua"
include '*.c'
exclude 'luac.c'
}
exportedHeaders {
include 'lauxlib.h', 'lua.h', 'lua.hpp', 'luaconf.h', 'lualib.h'
}
}
}
}
//创建一个luac执行文件构建入口
luac(NativeExecutableSpec) {
sources {
c {
source {
srcDir "src/main/c/lua"
include '*.c'
exclude 'lua.c'
}
exportedHeaders {
include 'lauxlib.h', 'lua.h', 'lua.hpp', 'luaconf.h', 'lualib.h'
}
}
}
}
}
}最后 开始编译
gradle刷新同步后, 我们在右侧gradle任务面板可以看到多出lua和luac相关的task, 此时我们执行build任务开始对lua源码进行编译:
编译完成后, 我们可以在
build文件中查看到生成的可执行文件:
双击可正常运行:

至此 我们的
lua编译完毕
附加
如果你只想编译
lua而不编译luac, 那么可以单独运行luaExecutable:
在
gradle配置文件中的组件的名称可以自定义
关于编译工具
编译工具和构建工具是两个不同的东西:
C/C++/Object-C语言常用的编译工具有:GCC,ClangJava语言的编译工具为Javac, 当然GCC也能编译java语言Android的编译工具为aapt,so库的编译早期采用的是GCC, 现在是Clang
上面对于lua的编译, 由于我测试时使用的是Mac平台, 同时电脑还装了Xcode, 所以内部默认采用的编译器是clang
关于Clang和GCC的介绍, 可以参见之前的文章《xcode中三种编译器的区别》
本文为作者原创转载时请注明出处 谢谢
