默认情况下通过 includes("tests")
引用子目录,就可以直接导入子目录下 xmake.lua 配置,如果要导入其它文件名的配置文件,可以指定文件全名到 includes,例如 includes("tests/xmake.lua")
。
基于此,再加上 includes 的模式匹配支持,我们就可以实现批量导入当前工程的所有子 xmake.lua,而不再需要挨个进入子目录手动去配置引入。
修改项目的根 xmake.lua 的内容改为如下配置。
includes("*/xmake.lua")
通过 */xmake.lua
模式匹配,xmake 会自动遍历当前所有一级子目录下的 xmake.lua 文件,将其引入。整个模式匹配的用法跟 add_files
是完全一致的,因此我们也可以使用 **/xmake.lua
来实现递归模式匹配,具体使用哪个,就看大家自己的实际项目需求了。
改完后,我们重新执行 xmake -r
,如果一切顺利,那么编译效果应该跟之前完全相同。
根 xmake.lua 配置
现在,我们整体的项目结构已经通过 includes 方式将所有的子工程全部关联到了一起,使得每个 target 都被放置在单独的子工程目录中去维护。
但是,如果我们有一些通用的配置,需要得这个项目的所有子 target 目标都生效,那么,我们可以直接在根 xmake.lua 的根域去配置它们,子目录下的 target 同样可以被继承到。
例如,我们继续完善项目根目录下的