import 模块导入接口介绍
虽然我们可以在自定义脚本中使用 xmake 提供的一些内置模块,例如上两节实验中介绍的 os 系统模块,以及 io 文件操作模块等等。
但是内置的模块毕竟有限,单纯地使用内置模块是无法满足所有用户在自定义脚本中的各种复杂的配置需求,而如果我们把更多的模块集成进 xmake 的内置模块中,这样不仅会让 xmake 非常的臃肿,而且更容易导致命名冲突等其它问题。
因此,我们可以使用 xmake 提供的 import 接口来导入扩展模块进行使用,这样既保证了 xmake 精简的同时,又能让其具备灵活强大的扩展性。
在具体介绍如何使用 import 导入模块之前,我们先简单介绍下 xmake 提供的各种模块种类。
- 内置模块:不导入就可以直接使用,不需要 import 额外导入。
- 内置的扩展模块:模块本身还是在 xmake 安装包内的,但是默认没有导入进来,只有通过 import 导入后才能使用。
- 外部的扩展模块:用户自己实现的模块、或者第三方的 lua 模块文件,通过 import 指定路径后导入进来使用。
导入内置的扩展模块
xmake 本身提供了大量的内置扩展模块,虽然默认没有导入到自定义脚本中来,但是用户可以根据自己项目的实际配置需求,选择性导入一些需要的扩展模块来使用。
基本上,xmake 的扩展模块已经可以满足大部分用户 80% 的脚本配置需求,这里我们主要列举和介绍一些比较常用的模块包。
模块包 | 描述 |
---|---|
core.base | xmake 的核心基础模块 |
core.project | xmake 的核心工程配置相关模块 |
lib.detect | 各种检测模块 |
net | 网络访问相关模块 |
utils | 实用工具模块 |
ui | 终端字符 ui 库模块 |
其中,我们大部分的功能模块都在 core
这个核心模块包中,里面有各种基础库,以及对 xmake 工程结构和信息的各种访问操作接口。
而 import 的使用方式其实跟 java、kotlin 这类语言很像,传入 import 的模块名参数也是基于 .
来按包名层级划分的,例如 import("core.project.config")
。
接下来,我们可以创建一个空工程来尝试如何使用 import 导入 xmake 的内部扩展模块。
cd ~/Code
xmake create import_test
创建完成后,进入 import_test 目录,然后编辑里面的 xmake.lua 文件,在 on_load
阶段通过 import 导入工程的 config 模块来获取 xmake f/config -p xxx -m debug
里面的编译平台、架构以及编译模式等配置信息。
target("import_test")
set_kind("binary")
add_files("src/*.cpp")
on_load(function (target)
import("core.project.config")
print("plat: %s", config.get("plat"))
print("arch: %s", config.get("arch"))