简介

XMake完全支持插件模式,我们可以很方便的扩展实现自己的插件,并且xmake也提供了一些内建的使用插件。

我们可以执行下 xmake -h 看下当前支持的插件:

  1. Plugins:
  2. l, lua Run the lua script.
  3. m, macro Run the given macro.
  4. doxygen Generate the doxygen document.
  5. hello Hello xmake!
  6. project Create the project file.
  • lua: 运行lua脚本的插件
  • macro: 这个很实用,宏脚本插件,可以手动录制多条xmake命令并且回放,也可以通过脚本实现一些复杂的宏脚本,这个我们后续会更加详细的介绍
  • doxygen:一键生成doxygen文档的插件
  • hello: 插件demo,仅仅显示一句话:’hello xmake!’
  • project: 生成工程文件的插件,目前仅支持(makefile),后续还会支持(vs,xcode等工程)的生成

快速开始

接下来我们介绍下本文的重点,一个简单的hello xmake插件的开发,代码如下:

  1. -- 定义一个名叫hello的插件任务
  2. task("hello")
  3. -- 设置类型为插件
  4. set_category("plugin")
  5. -- 插件运行的入口
  6. on_run(function ()
  7. -- 显示hello xmake!
  8. print("hello xmake!")
  9. end)
  10. -- 设置插件的命令行选项,这里没有任何参数选项,仅仅显示插件描述
  11. set_menu {
  12. -- usage
  13. usage = "xmake hello [options]"
  14. -- description
  15. , description = "Hello xmake!"
  16. -- options
  17. , options = {}
  18. }

这个插件的文件结构如下:

  1. hello
  2. - xmake.lua

现在一个最简单的插件写完了,那怎么让它被xmake检测到呢,有三种方式:

  1. 把 hello 这个文件夹放置在 xmake的插件安装目录 xmake/plugins,这个里面都是些内建的插件
  2. 把 hello 文件夹放置在 ~/.xmake/plugins 用户全局目录,这样对当前xmake 全局生效
  3. 把 hello 文件夹放置在任意地方,通过在工程描述文件xmake.lua中调用add_plugindirs("./hello") 添加当前的工程的插件搜索目录,这样只对当前工程生效

运行插件

接下来,我们尝试运行下这个插件:

  1. xmake hello

显示结果:

  1. hello xmake!

最后我们还可以在target自定义的脚本中运行这个插件:

  1. target("demo")
  2. -- 构建之后运行插件
  3. after_build(function (target)
  4. -- 导入task模块
  5. import("core.project.task")
  6. -- 运行插件任务
  7. task.run("hello")
  8. end)