欢迎光临
我们一直在努力

14.国产构建工具之王xmake——构建选项option

目录

一、前言

二、正文

1. 配置选项的核心概念与组成结构

1.1 核心定义

1.2 option的三大核心组成

1.2.1 命名空间(namespace)

1.2.2 描述域

1.2.3 脚本域

1.2.4 三者的核心关联

2. 描述域的基础语法与核心API

2.1 选项的基础定义方式

2.2 描述域核心配置API

2.2.1 基础属性配置API

2.2.2 菜单显示配置API

2.2.3 自动应用配置API

2.3 选项的类型与检测行为

3. 选项与编译目标(target)的绑定与基础使用

3.1 与target的两种绑定方式

3.1.1 自动绑定(官方推荐)

3.1.2 手动条件判断

3.2 命令行配置规则

3.3 典型基础场景示例

3.3.1 布尔开关选项:启用LTO优化

3.3.2 字符串选项:自定义源码根目录

3.3.3 多值菜单选项:选择编译架构

4. 脚本域的执行周期与实例API

4.1 脚本域的三大执行钩子与规则

4.2 option实例核心API

4.2.1 基础信息与状态控制API

4.2.2 配置操作API(与描述域一一对应)

4.2.3 依赖操作API

4.3 脚本域联动示例

5. 高级特性:内置自动检测能力

三、结语


写在前面

原创不易,每一篇文章都是花费大量的时间编写而成,个人认为都是干货满满!如果各位觉得对自己有帮助,请动动您发财的小手,关注本账号, 我将持续为大家带来优质内容!

所有内容首发都将在公众号【飞翔的SA】,也请大家移步公众号阅读,您的支持是我坚持的动力。


一、前言

在xmake的构建体系中,配置选项(option)是实现项目自定义构建配置、动态修改构建逻辑的核心基石。它不仅能实现简单的功能开关、参数传递,还能完成系统依赖检测、编译器特性适配、多选项联动控制等复杂构建需求,是xmake工程化能力的核心组成部分。

本文介绍option的核心概念、组成结构、语法规则与使用方法,从基础定义到高级实战,帮助大家掌握option的完整使用体系。

文中使用的软件及版本:xmake3.0.7 请预先安装!

二、正文

1. 配置选项的核心概念与组成结构

1.1 核心定义

option是xmake中用于定义自定义编译配置的独立模块,每个option对应一个可配置项,可通过命令行、图形菜单修改配置,也可通过内置检测逻辑自动调整状态,最终将配置动态应用到编译目标(target)中,是连接用户配置与项目构建逻辑的核心桥梁。

1.2 option的三大核心组成

这是option体系的核心框架,三者各司其职又紧密关联,共同构成了option的完整能力。

1.2.1 命名空间(namespace)

option支持模块名::选项名的命名空间格式,用于区分不同模块的选项,避免多模块开发中的命名冲突。可通过实例接口option:namespace()获取命名空间,option:fullname()获取带命名空间的完整名称,option:name()仅获取纯选项名。

1.2.2 描述域

描述域是option的静态定义主体,通过option(name)进入选项的描述域,在其中通过set_xxx、add_xxx系列接口声明选项的基础属性、默认行为、关联配置和检测规则。

  • 核心作用:定义选项的元信息、默认值、菜单显示规则、启用时自动应用的编译配置、内置检测规则等静态属性;

  • 作用域规则:除与target共用的接口外,option的描述域接口不可直接放在全局作用域;可通过匿名全局域option()为所有option设置全局生效的配置;option域可重复进入追加配置,也可通过option_end()显式退出当前描述域。

1.2.3 脚本域

脚本域是option的动态逻辑执行部分,通过before_check、on_check、after_check三个API定义,在选项检测的不同阶段执行自定义逻辑。脚本域的入参是option实例对象,可通过实例接口动态修改选项的状态、配置值,实现复杂的条件控制、联动逻辑。

  • 核心作用:覆盖/扩展内置检测逻辑、实现多选项联动、动态调整选项配置与启用状态,是option实现动态化的核心。

1.2.4 三者的核心关联
  • 描述域的set_xxx/add_xxx接口,与脚本域中option实例的option:set()/option:add()接口一一对应,脚本域可通过实例接口完全覆盖或追加描述域的配置。

2. 描述域的基础语法与核心API

2.1 选项的基础定义方式

option支持两种定义写法,适配不同复杂度的配置场景:

2.2 描述域核心配置API

根据用途可分为三大类,覆盖option静态定义的全场景需求:

2.2.1 基础属性配置API
  • set_default(value):设置选项默认值,支持布尔、字符串、数字类型,直接决定选项的默认检测行为;

  • add_deps(deps…):添加选项依赖,调整检测顺序,确保依赖选项先完成检测,为脚本域联动逻辑提供基础;

  • set_values(values…):为多值选项设置可选值列表,用于xmake f –menu图形菜单的快速选择, 如下图所示。

    图片

2.2.2 菜单显示配置API
  • set_showmenu(bool):设置是否在帮助菜单和图形菜单中显示,2.6.8+版本默认启用,启用后可通过命令行配置;

  • set_description(desc…):设置选项描述,支持单行/多行,在菜单中显示,帮助用户理解选项用途;

  • set_category(cate):设置选项分类,用于菜单分组显示,支持分级路径实现图形菜单的子菜单结构。

2.2.3 自动应用配置API

选项启用后,这些配置会自动应用到绑定的target上,无需手动条件判断:

  • add_defines():添加预编译宏定义;

  • add_cflags()/add_cxxflags():添加C/C++编译参数;

  • add_links()/add_linkdirs():添加链接库与库搜索目录;

  • add_includedirs():添加头文件搜

赞(0)
未经允许不得转载:171主机测评 » 14.国产构建工具之王xmake——构建选项option
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址