---
url: /zh/posts/variables-usage.md
---

title: xmake内建变量和外置变量的使用
tags: \[xmake, 内建变量, 外置变量]
date: 2016-08-08
author: Ruki

***

## 内建变量

内置在字符串中，例如：

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

其中的$(buildir)就是内建变量，这些是随着每次xmake config的配置改变而自动改变的。

目前支持的一些变量如下：

* $(buildir): 编译输出目录，可通过：`xmake f -o /tmp` 修改
* $(projectdir): 工程主目录，可通过：`xmake f -P ./project` 修改
* $(os): 编译目标的操作系统
* $(plat): 编译目标的所在的平台，可通过：`xmake f -p android`修改
* $(mode): 编译模式：debug、release、profile，可通过： `xmake f -m debug` 修改
* $(arch): 编译目标的架构，可通过： `xmake f -a armv7` 修改

注：所有通过`xmake f/config`配置的参数选项都可以通过内置变量访问，例如android下：

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

那么$(ndk)就是可访问变量，并且随着配置的改变而改变，但是这个在非android平台不能使用。

其他所有的配置相关变量，可以通过以下命令来查看：

```lua
xmake f --help 
```

## 外置变量

外置变量很简单，就是lua的变量操作，因为xmake.lua本身就是lua脚本，那么lua的所有特性当然都能直接使用，因此可以这么使用：

```lua

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

通过lua的字符串变量追加语法就行了，是不是很简单。
