# Xmake Options

> Use when defining user-configurable build options (`option(...)`), reading them from targets, or exposing them on the `xmake f` command line. Covers showmenu, default, values, and option-driven config.h generation.

- **Type:** Skill
- **Install:** `agentstack add skill-xmake-io-xmake-skills-xmake-options`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [xmake-io](https://agentstack.voostack.com/s/xmake-io)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** Apache-2.0
- **Upstream author:** [xmake-io](https://github.com/xmake-io)
- **Source:** https://github.com/xmake-io/xmake-skills/tree/master/skills/project-config/xmake-options

## Install

```sh
agentstack add skill-xmake-io-xmake-skills-xmake-options
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Xmake Options

Options are user-facing switches that can be set via `xmake f --name=value` and queried from targets and conditions.

## Declaring an option

```lua
option("enable_foo")
    set_default(false)
    set_showmenu(true)
    set_description("Enable the foo subsystem")
option_end()
```

`set_showmenu(true)` makes the option visible in `xmake f --menu` and `xmake f --help`.

## Using an option from a target

```lua
target("app")
    add_files("src/*.cpp")
    if has_config("enable_foo") then
        add_files("src/foo/*.cpp")
        add_defines("ENABLE_FOO=1")
    end
```

`has_config("name")` returns true when the option is truthy. Use `get_config("name")` to read the actual value.

## Enumerated / typed options

```lua
option("backend")
    set_default("vulkan")
    set_values("vulkan", "metal", "d3d12")
    set_showmenu(true)
```

```bash
xmake f --backend=metal
```

## Options that probe the host

```lua
option("has_avx2")
    add_cxflags("-mavx2")
    add_cxxincludes("immintrin.h")
    add_cxxsnippets("int f(){ return _mm256_set1_epi32(1)[0]; }")
```

Xmake runs the snippet at configure time; the option becomes enabled if the probe compiles.

## Generating a config header

```lua
target("app")
    set_configdir("$(buildir)/config")
    add_configfiles("src/config.h.in")
    set_configvar("ENABLE_FOO", has_config("enable_foo") and 1 or 0)
```

`src/config.h.in` can reference `${define ENABLE_FOO}` or `${ENABLE_FOO}`.

## Command-line usage

```bash
xmake f --enable_foo=y --backend=metal -m release
xmake
```

## When to branch out

- Per-target flags — `xmake-targets`
- Toolchain selection via options — `xmake-toolchains`

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [xmake-io](https://github.com/xmake-io)
- **Source:** [xmake-io/xmake-skills](https://github.com/xmake-io/xmake-skills)
- **License:** Apache-2.0

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-xmake-io-xmake-skills-xmake-options
- Seller: https://agentstack.voostack.com/s/xmake-io
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
