xmake 的工程描述文件 xmake.lua 虽然基于 lua 语法,但是为了使得更加方便简洁得编写项目构建逻辑,xmake 对其进行了一层封装,使得编写 xmake.lua 不会像编写 makefile 那样繁琐,甚至比 cmake 的 CMakelists.txt 的 DSL 语法还更加的简洁直观,学习成本更低。
基本上写个简单的工程构建描述,只需三行就能完整构建一个 C/C++ 工程,例如。
target("test")
set_kind("binary")
add_files("src/*.c")
配置分离
xmake.lua 采用二八原则实现了描述域、脚本域两层分离式配置。
什么是二八原则呢,简单来说,大部分项目的配置,80% 的情况下,都是些基础的常规配置,比如:add_cxflags
、add_links
等,只有剩下不到 20% 的地方才需要额外编写一些复杂的逻辑脚本来满足一些特殊的配置需求。
而这剩余的 20% 配置通常比较复杂,如果直接充斥在整个 xmake.lua 里面,会把整个项目的配置弄的很混乱,不具有良好的可读性。
因此,xmake 通过描述域、脚本域两种不同的配置方式,来隔离 80% 的简单配置以及 20% 的复杂配置,使得整个 xmake.lua 看起来非常的清晰直观,可读性和可维护性都达到最佳。
我们可以通过下图大致了解哪些配置区域是描述域配置,哪些是脚本域。
也可以通过下面描述的特征来快速区分:
- 描述域:使用
set_xx
、add_xxx
等配置接口进行的配置区域。 - 脚本域:使用
on_xx
、after_xxx
和before_xxx
等配置接口的内部区域。