跳转到内容

定义选项

自定义命令行选项

我们可以定义一个选项开关,用于控制内部的配置逻辑,例如:

lua
option("tests", {default = false, description = "Enable Tests"})

target("foo")
    set_kind("binary")
    add_files("src/*.cpp")
    if has_config("tests") then
        add_defines("TESTS")
    end

然后,我们可以命令行启用这个自定义的选项,使得 foo 目标编译时候自动加上-DTEST的宏定义。

lua
$ xmake f --tests=y
$ xmake

上面的 option 配置由于比较简单,所以我们使用了单行简化写法,我们也可以使用完整的域配置写法。

lua
option("tests")
    set_default(false)
    set_description("Enable Tests")

绑定选项到目标

我们也可以不使用 has_configadd_defines 去手动设置,直接使用 add_options 将选项绑定到指定的 target。

这样,当选项被启用的时候,tests 选项中所有关联的设置都会自动设置到被绑定的目标中。

lua
option("tests")
    set_description("Enable Tests")
    set_default(false)
    add_defines("TEST")

target("foo")
    set_kind("binary")
    add_files("src/*.cpp")
    add_options("test")

上面的例子,当 tests 启用后,foo 目标会自动添加上 -DTEST

其他

关于更多选项的使用,请查看完整文档:选项 API 手册