xmake 插件任务介绍
除了 option()
和 target()
两个对象配置域,xmake 还提供了另外一种配置域 task()
,通过它我们可以自定义一些扩展的运行任务,甚至可以用来实现一些扩展插件。
而在上节实验中,我们通过 xmake 内置的工程生成插件,其实也已经大概了解了 xmake 插件是什么以及如何使用了。
所谓的插件,就是除了 xmake 提供的一些内置基本子命令,例如 xmake build
、xmake install
之外的其它子命令,大家可以在 xmake.lua 中通过 task("myplugin")
自定义一个插件命令,然后通过 xmake myplugin
的方式运行我们定义的插件子命令。
编写一个简单的插件
接下来,我们通过实现一个简单的 echo
插件,来了解下整个插件编写过程。由于我们是在自己项目工程的 xmake.lua 里面去编写插件任务,因此先执行下面的命令,创建一个空工程。
cd ~/Code
xmake create plugin_test
创建完成后,进入 plugin_test 目录,编辑里面的 xmake.lua 文件,修改成如下配置,在里面定义一个 task("echo")
插件任务配置域用来描述 echo 插件。
task("echo")
set_menu {usage = "xmake echo [options]", description = "Echo the given info!", options = {}}
on_run(function ()
print("hello xmake!")
end)
target("test")
set_kind("binary")
add_files("src/*.cpp")
通过上面的配置可以看到,整个插件的定义很简单,主要由以下三部分组成。
task()
:定义整个插件任务配置域。set_menu()
:用于配置插件在 help 命令菜单中的显示和参数描述。on_run()
:定义整个插件的脚本运行入口。
配置完成后通过运行 xmake --help
命令,查看 xmake 帮助菜单,找寻我们定义的 echo 插件,看看是否出现在帮助列表里面。
在上图的红框位置,就是我们新定义的插件,不过当前没有被划分到 Plugins
里面,而是在 Tasks
下面,这个只是 task()
的分类问题,默认定义的 task()
既不属于 Actions 也不属于 Plugins 分类,而是作为通用的 Tasks 分类。
当然,这仅仅只是 help 菜单显示分类的差异,并不影响我们把它作为插件来使用,不过我们也可以通过 set_category("plugin")
将其标记为 Plugins 分类。
继续编辑 xmake.lua 文件。
task("echo")
set_menu {usage = "xmake echo [options]", description &#