Skip to content

Using Built-in Variables and External Variables in xmake

Built-in Variables

Embedded in strings, for example:

lua
    set_objectdir("$(buildir)/.objs")

Among them, $(buildir) is a built-in variable. These automatically change as the configuration changes with each xmake config.

Currently supported variables are as follows:

  • $(buildir): Compilation output directory, can be modified via: xmake f -o /tmp
  • $(projectdir): Project main directory, can be modified via: xmake f -P ./project
  • $(os): Operating system of the compilation target
  • $(plat): Platform where the compilation target is located, can be modified via: xmake f -p android
  • $(mode): Compilation mode: debug, release, profile, can be modified via: xmake f -m debug
  • $(arch): Architecture of the compilation target, can be modified via: xmake f -a armv7

Note: All parameter options configured through xmake f/config can be accessed through built-in variables, for example on android:

lua
xmake f -p android --ndk=/xxxx

Then $(ndk) is an accessible variable and changes as the configuration changes, but this cannot be used on non-android platforms.

All other configuration-related variables can be viewed through the following command:

lua
xmake f --help

External Variables

External variables are simple, they are lua variable operations. Since xmake.lua itself is a lua script, all features of lua can be directly used, so it can be used like this:

lua

local root = "/tmp"
set_objectdir(root .. ".objs")

Just use lua's string variable concatenation syntax. Isn't it simple?