---
title: 更细粒度的文件编译选项控制
tags: [xmake, lua, 编译选项]
date: 2017-08-10
author: Ruki
outline: deep
---

之前的版本对编译控制粒度，只能到target这一级：

```lua
-- 全局根配置，所有target都会被影响
add_defines("ROOT")

target("test")

    -- target目标配置，只对test目标下的所有源文件编译生效
    add_defines("TEST")
    add_files("src/*.c")
```

最近给2.1.6开发版本中的`add_files`进行了改进，支持基于files更细粒度的编译选项控制，例如：

```lua
target("test")
    add_defines("TEST1")
    add_files("src/*.c")
    add_files("test/*.c", "test2/test2.c", {defines = "TEST2", languages = "c99", includedirs = ".", cflags = "-O0"})
```

可以在`add_files`的最后一个参数，传入一个配置table，去控制指定files的编译选项，里面的配置参数跟target的一致，并且这些文件还会继承target的通用配置`-DTEST1`。

针对`add_files`的更多描述，见[手册文档](https://xmake.io/zh/)，大家可以下载master版本来预先体验这一新特性。

