aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2019-03-30 20:41:55 +0800
committerruki <waruqi@gmail.com>2019-03-30 20:41:55 +0800
commit6d95e6072179cb70f0b401be5b42297eb4bf1187 (patch)
tree9869f1fefb77541eada4acf9ac3cc5cae012c455
parent3d77745f005a8a6d4d318c8e90ca01f87b61e841 (diff)
downloadxmake-docs-6d95e6072179cb70f0b401be5b42297eb4bf1187.tar.gz
xmake-docs-6d95e6072179cb70f0b401be5b42297eb4bf1187.zip
update docs for 2.2.5
-rw-r--r--manual.md97
-rw-r--r--zh/manual.md90
2 files changed, 123 insertions, 64 deletions
diff --git a/manual.md b/manual.md
index d2a1b412..6a863ad4 100644
--- a/manual.md
+++ b/manual.md
@@ -770,7 +770,7 @@ target("test2")
| [set_warnings](#targetset_warnings) | Set compilation warning level | >= 1.0.1 |
| [set_optimize](#targetset_optimize) | Set compilation optimization level | >= 1.0.1 |
| [set_languages](#targetset_languages) | Set source code language standards | >= 1.0.1 |
-| [set_headerdir](#targetset_headerdir) | Set output directories for header files | >= 1.0.1 |
+| [set_headerdir](#targetset_headerdir) | Set output directories for header files | >= 1.0.1 < 2.2.5 deprecated |
| [set_targetdir](#targetset_targetdir) | Set output directories for target file | >= 1.0.1 |
| [set_objectdir](#targetset_objectdir) | Set output directories for object files | >= 1.0.1 |
| [set_dependir](#targetset_dependir) | Set output directories for dependent files | >= 2.2.2 |
@@ -803,7 +803,7 @@ target("test2")
| [after_run](#targetafter_run) | Run custom script after running target | >= 2.0.1 |
| [set_config_h](#targetset_config_h) | Set auto-generated config header file | >= 1.0.1 < 2.1.5 deprecated |
| [set_config_h_prefix](#targetset_config_h) | Set macro prefix in auto-generated config header | >= 1.0.1 < 2.1.5 deprecated |
-| [set_config_header](#targetset_config_header) | Set auto-generated config header file (new) | >= 2.1.5 |
+| [set_config_header](#targetset_config_header) | Set auto-generated config header file | >= 2.1.5 < 2.2.5 deprecated |
| [set_pcheader](#targetset_pcheader) | Set pre-compiled c header file | >= 2.1.5 |
| [set_pcxxheader](#targetset_pcxxheader) | Set pre-compiled c++ header file | >= 2.1.5 |
| [add_deps](#targetadd_deps) | Add target dependencies | >= 1.0.1 |
@@ -811,14 +811,14 @@ target("test2")
| [add_syslinks](#targetadd_syslinks) | Add system link libraries | >= 2.2.3 |
| [add_files](#targetadd_files) | Add source files | >= 1.0.1 |
| [del_files](#targetdel_files) | Remove source files | >= 2.1.9 |
-| [add_headers](#targetadd_headers) | Add installed header files | >= 1.0.1 |
+| [add_headers](#targetadd_headers) | Add installed header files | >= 1.0.1 < 2.2.5 deprecated |
| [add_linkdirs](#targetadd_linkdirs) | Add link search directories | >= 1.0.1 |
| [add_rpathdirs](#targetadd_rpathdirs) | Add load search directories for dynamic library | >= 2.1.3 |
| [add_includedirs](#targetadd_includedirs) | Add include search directories | >= 1.0.1 |
| [add_defines](#targetadd_defines) | Add macro definition | >= 1.0.1 |
| [add_undefines](#targetadd_undefines) | Add macro undefinition | >= 1.0.1 |
-| [add_defines_h](#targetadd_defines_h) | Add macro definition to auto-generated config header | >= 1.0.1 |
-| [add_undefines_h](#targetadd_undefines_h) | Add macro undefinition to auto-generated config header | >= 1.0.1 |
+| [add_defines_h](#targetadd_defines_h) | Add macro definition to auto-generated config header | >= 1.0.1 < 2.1.5 deprecated |
+| [add_undefines_h](#targetadd_undefines_h) | Add macro undefinition to auto-generated config header | >= 1.0.1 < 2.1.5 deprecated |
| [add_cflags](#targetadd_cflags) | Add c compilation flags | >= 1.0.1 |
| [add_cxflags](#targetadd_cxflags) | Add c/c++ compilation flags | >= 1.0.1 |
| [add_cxxflags](#targetadd_cxxflags) | Add c++ compilation flags | >= 1.0.1 |
@@ -849,6 +849,9 @@ target("test2")
| [set_values](#targetset_values) | Set custom configuartion values | >= 2.2.1 |
| [add_values](#targetadd_values) | Add custom configuartion values | >= 2.2.1 |
| [set_installdir](#targetset_installdir) | Set the installation directory | >= 2.2.5 |
+| [add_installfiles](#targetadd_installfiles) | add installation files | >= 2.2.5 |
+| [add_headerfiles](#targetadd_headerfiles) | Add header files | >= 2.2.5 |
+| [add_configfiles](#targetadd_configfiles) | Add template configuartion files | >= 2.2.5 |
##### target
@@ -1201,6 +1204,10 @@ windows下vs的编译器并不支持按c99的标准来编译c代码,只能支
###### Set output directories for header files
+<p class="warning">
+注,2.2.5版本之后,此接口已废弃,请使用[add_headerfiles](#targetadd_headerfiles)代替。
+</p>
+
设置头文件的输出目录,默认输出到build目录中。
```lua
@@ -1771,6 +1778,7 @@ target("test")
###### Set auto-generated config header file
<p class="warning">
+2.2.5版本之后,此接口已废弃,请使用[add_configfiles](#targetadd_configfiles)。
2.1.5版本之后,此接口已废弃,请使用[set_config_header](#targetset_config_header)。
</p>
@@ -1821,6 +1829,7 @@ target("test")
###### Set macro prefix in auto-generated config header
<p class="warning">
+2.2.5版本之后,此接口已废弃,请使用[add_configfiles](#targetadd_configfiles)。
2.1.5版本之后,此接口已废弃,请使用[set_config_header](#targetset_config_header)。
</p>
@@ -1840,6 +1849,11 @@ target("test")
###### Set macro prefix in auto-generated config header and prefix
+<p class="warning">
+2.2.5版本之后,此接口已废弃,请使用[add_configfiles](#targetadd_configfiles)。
+2.1.5版本之后,此接口已废弃,请使用[set_config_header](#targetset_config_header)。
+</p>
+
此接口是[set_config_h](#targetset_config_h)和[set_config_h_prefix](#targetset_config_h_prefix)的升级版本,2.1.5之后支持。
如果你想在xmake配置项目成功后,或者自动检测某个选项通过后,把检测的结果写入配置头文件,那么需要调用这个接口来启用自动生成`config.h`文件。
@@ -1959,6 +1973,8 @@ target("test")
###### Add target dependencies
+
+
添加当前目标的依赖目标,编译的时候,会去优先编译依赖的目标,然后再编译当前目标。。。
```lua
@@ -1971,65 +1987,53 @@ target("test2")
set_files("*.c")
target("demo")
-
- -- 添加依赖目标:test1, test2
add_deps("test1", "test2")
-
- -- 链接libtest1.a,libtest2.a
- add_links("test1", "test2")
```
上面的例子,在编译目标demo的时候,需要先编译test1, test2目标,因为demo会去用到他们
<p class="tip">
-2.1.5版本后,target会自动继承依赖目标中的配置和属性,不再需要额外调用`add_links`, `add_linkdirs`和`add_rpathdirs`等接口去关联依赖目标了。
+target会自动继承依赖目标中的配置和属性,不需要额外调用`add_links`, `add_linkdirs`和`add_rpathdirs`等接口去关联依赖目标了。
</p>
-2.1.5版本之后,上述代码可简化为:
-
-```lua
-target("test1")
- set_kind("static")
- set_files("*.c")
-
-target("test2")
- set_kind("static")
- set_files("*.c")
-
-target("demo")
- add_deps("test1", "test2") -- 会自动链接依赖目标
-```
-
并且继承关系是支持级联的,例如:
```lua
target("library1")
set_kind("static")
add_files("*.c")
- add_headers("inc1/*.h") -- 此处的头文件相关目录也会被继承
+ add_includedirs("inc") -- 默认私有头文件目录不会被继承
+ add_includedirs("inc1", {public = true}) -- 此处的头文件相关目录也会被继承
target("library2")
set_kind("static")
add_deps("library1")
add_files("*.c")
- add_headers("inc2/*.h")
target("test")
set_kind("binary")
add_deps("library2")
```
-如果我们还是想以前那样,并不想继承依赖target的任何配置,如何操作呢?这个在2.1.6版本中也对其进行了支持,通过:
+如果我们不想继承依赖target的任何配置,如何操作呢?
```lua
add_deps("dep1", "dep2", {inherit = false})
```
-通过显示设置inherit配置,来告诉xmake,这两个依赖的配置是否需要被继承,如果不设置,默认就是启用继承的。
+通过显式设置inherit配置,来告诉xmake,这两个依赖的配置是否需要被继承,如果不设置,默认就是启用继承的。
-<p class="warning">
-需要注意的是`add_includedirs()`不会被依赖继承,因为子目录的头文件搜索路径是私有的,反而污染父目标搜索路径,只有`add_headers`指定的导出头文件所在目录才会被继承。
-</p>
+2.2.5版本之后,可通过 `add_includedirs("inc1", {public = true})`, 设置public为true, 将includedirs的设置公开给其他依赖的子target继承。
+
+目前对于target的编译链接flags相关接口设置,都是支持继承属性的,可以人为控制是否需要导出给其他target来依赖继承,目前支持的属性有:
+
+| 属性 | 描述 |
+| ---- | ---- |
+| private | 默认设置,作为当前target的私有配置,不会被依赖的其他target所继承 |
+| public | 公有配置,当前target,依赖的子target都会被设置 |
+| interface | 接口设置,仅被依赖的子target所继承设置,当前target不参与 |
+
+对于这块的详细说明,可以看下:https://github.com/xmake-io/xmake/issues/368
##### target:add_links
@@ -2174,6 +2178,10 @@ target("test")
###### Add installed header files
+<p class="warning">
+注,2.2.5版本之后,此接口已废弃,请使用[add_headerfiles](#targetadd_headerfiles)代替。
+</p>
+
安装指定的头文件到build目录,如果设置了[set_headerdir](#targetset_headerdir), 则输出到指定目录。
安装规则的语法跟[add_files](#targetadd_files)类似,例如:
@@ -2259,6 +2267,21 @@ target("test")
当然也可以直接通过[add_cxflags](#targetadd_cxflags)或者[add_mxflags](#targetadd_mxflags)等接口来设置,也是可以的。
+2.2.5之后,可通过额外的`{public|interface = true}`属性设置,将includedirs导出给依赖的子target,例如:
+
+```lua
+target("test")
+ set_kind("static")
+ add_includedirs("src/include") -- 仅对当前target生效
+ add_includedirs("$(buildir)/include", {public = true}),当前target和子target都会被设置
+
+target("demo")
+ set_kind("binary")
+ add_deps("test")
+```
+
+更多关于这块的说明,见:[add_deps](#targetadd_deps)
+
<p class="tip">
如果不想在工程中写死,可以通过:`xmake f --includedirs=xxx`或者`xmake f --cxflags="-I/xxx"`的方式来设置,当然这种手动设置的目录搜索优先级更高。
</p>
@@ -2293,12 +2316,20 @@ add_undefines("DEBUG")
###### Add macro definition to auto-generated config header
+<p class="warning">
+2.2.5版本之后,此接口已废弃,请使用[add_configfiles](#targetadd_configfiles)。
+</p>
+
添加宏定义到`config.h`配置文件,`config.h`的设置,可参考[set_config_h](#targetset_config_h)接口。
##### target:add_undefines_h
###### Add macro undefinition to auto-generated config header
+<p class="warning">
+2.2.5版本之后,此接口已废弃,请使用[add_configfiles](#targetadd_configfiles)。
+</p>
+
在`config.h`配置文件中通过`undef`禁用宏定义,`config.h`的设置,可参考[set_config_h](#targetset_config_h)接口。
##### target:add_cflags
diff --git a/zh/manual.md b/zh/manual.md
index f12e32ac..be50460c 100644
--- a/zh/manual.md
+++ b/zh/manual.md
@@ -796,7 +796,7 @@ target("test2")
| [set_warnings](#targetset_warnings) | 设置警告级别 | >= 1.0.1 |
| [set_optimize](#targetset_optimize) | 设置优化级别 | >= 1.0.1 |
| [set_languages](#targetset_languages) | 设置代码语言标准 | >= 1.0.1 |
-| [set_headerdir](#targetset_headerdir) | 设置头文件安装目录 | >= 1.0.1 |
+| [set_headerdir](#targetset_headerdir) | 设置头文件安装目录 | >= 1.0.1 < 2.2.5 已废弃 |
| [set_targetdir](#targetset_targetdir) | 设置生成目标文件目录 | >= 1.0.1 |
| [set_objectdir](#targetset_objectdir) | 设置对象文件生成目录 | >= 1.0.1 |
| [set_dependir](#targetset_dependir) | 设置依赖文件生成目录 | >= 2.2.2 |
@@ -829,7 +829,7 @@ target("test2")
| [after_run](#targetafter_run) | 在运行之后执行一些自定义脚本 | >= 2.0.1 |
| [set_config_h](#targetset_config_h) | 设置自动生成的配置头文件路径 | >= 1.0.1 < 2.1.5 已废弃 |
| [set_config_h_prefix](#targetset_config_h) | 设置自动生成的头文件中宏定义命名前缀 | >= 1.0.1 < 2.1.5 已废弃 |
-| [set_config_header](#targetset_config_header) | 设置自动生成的配置头文件路径和前缀 | >= 2.1.5 |
+| [set_config_header](#targetset_config_header) | 设置自动生成的配置头文件路径和前缀 | >= 2.1.5 < 2.2.5 已废弃 |
| [set_pcheader](#targetset_pcheader) | 设置c预编译头文件 | >= 2.1.5 |
| [set_pcxxheader](#targetset_pcxxheader) | 设置c++预编译头文件 | >= 2.1.5 |
| [add_deps](#targetadd_deps) | 添加子工程目标依赖 | >= 1.0.1 |
@@ -837,7 +837,7 @@ target("test2")
| [add_syslinks](#targetadd_syslinks) | 添加系统链接库名 | >= 2.2.3 |
| [add_files](#targetadd_files) | 添加源代码文件 | >= 1.0.1 |
| [del_files](#targetdel_files) | 从前面的源文件列表中删除指定文件 | >= 2.1.9 |
-| [add_headers](#targetadd_headers) | 添加安装的头文件 | >= 1.0.1 |
+| [add_headers](#targetadd_headers) | 添加安装的头文件 | >= 1.0.1 < 2.2.5 已废弃 |
| [add_linkdirs](#targetadd_linkdirs) | 添加链接库搜索目录 | >= 1.0.1 |
| [add_rpathdirs](#targetadd_rpathdirs) | 添加运行时候动态链接库搜索目录 | >= 2.1.3 |
| [add_includedirs](#targetadd_includedirs) | 添加头文件搜索目录 | >= 1.0.1 |
@@ -875,6 +875,9 @@ target("test2")
| [set_values](#targetset_values) | 设置一些扩展配置值 | >= 2.2.1 |
| [add_values](#targetadd_values) | 添加一些扩展配置值 | >= 2.2.1 |
| [set_installdir](#targetset_installdir) | 设置安装目录 | >= 2.2.5 |
+| [add_installfiles](#targetadd_installfiles) | 添加安装文件 | >= 2.2.5 |
+| [add_headerfiles](#targetadd_headerfiles) | 添加安装头文件 | >= 2.2.5 |
+| [add_configfiles](#targetadd_configfiles) | 添加模板配置文件 | >= 2.2.5 |
##### target
@@ -1223,6 +1226,10 @@ windows下vs的编译器并不支持按c99的标准来编译c代码,只能支
###### 设置头文件安装目录
+<p class="warning">
+注,2.2.5版本之后,此接口已废弃,请使用[add_headerfiles](#targetadd_headerfiles)代替。
+</p>
+
设置头文件的输出目录,默认输出到build目录中。
```lua
@@ -1792,6 +1799,7 @@ target("test")
###### 设置自动生成的配置头文件路径
<p class="warning">
+2.2.5版本之后,此接口已废弃,请使用[add_configfiles](#targetadd_configfiles)。
2.1.5版本之后,此接口已废弃,请使用[set_config_header](#targetset_config_header)。
</p>
@@ -1842,6 +1850,7 @@ target("test")
###### 设置自动生成的头文件中宏定义命名前缀
<p class="warning">
+2.2.5版本之后,此接口已废弃,请使用[add_configfiles](#targetadd_configfiles)。
2.1.5版本之后,此接口已废弃,请使用[set_config_header](#targetset_config_header)。
</p>
@@ -1860,6 +1869,10 @@ target("test")
###### 设置自动生成的配置头文件路径和前缀
+<p class="warning">
+2.2.5版本之后,此接口已废弃,请使用[add_configfiles](#targetadd_configfiles)。
+</p>
+
此接口是[set_config_h](#targetset_config_h)和[set_config_h_prefix](#targetset_config_h_prefix)的升级版本,2.1.5之后支持。
如果你想在xmake配置项目成功后,或者自动检测某个选项通过后,把检测的结果写入配置头文件,那么需要调用这个接口来启用自动生成`config.h`文件。
@@ -1991,65 +2004,53 @@ target("test2")
set_files("*.c")
target("demo")
-
- -- 添加依赖目标:test1, test2
add_deps("test1", "test2")
-
- -- 链接libtest1.a,libtest2.a
- add_links("test1", "test2")
```
上面的例子,在编译目标demo的时候,需要先编译test1, test2目标,因为demo会去用到他们
<p class="tip">
-2.1.5版本后,target会自动继承依赖目标中的配置和属性,不再需要额外调用`add_links`, `add_linkdirs`和`add_rpathdirs`等接口去关联依赖目标了。
+target会自动继承依赖目标中的配置和属性,不需要额外调用`add_links`, `add_linkdirs`和`add_rpathdirs`等接口去关联依赖目标了。
</p>
-2.1.5版本之后,上述代码可简化为:
-
-```lua
-target("test1")
- set_kind("static")
- set_files("*.c")
-
-target("test2")
- set_kind("static")
- set_files("*.c")
-
-target("demo")
- add_deps("test1", "test2") -- 会自动链接依赖目标
-```
-
并且继承关系是支持级联的,例如:
```lua
target("library1")
set_kind("static")
add_files("*.c")
- add_headers("inc1/*.h") -- 此处的头文件相关目录也会被继承
+ add_includedirs("inc") -- 默认私有头文件目录不会被继承
+ add_includedirs("inc1", {public = true}) -- 此处的头文件相关目录也会被继承
target("library2")
set_kind("static")
add_deps("library1")
add_files("*.c")
- add_headers("inc2/*.h")
target("test")
set_kind("binary")
add_deps("library2")
```
-如果我们还是想以前那样,并不想继承依赖target的任何配置,如何操作呢?这个在2.1.6版本中也对其进行了支持,通过:
+如果我们不想继承依赖target的任何配置,如何操作呢?
```lua
add_deps("dep1", "dep2", {inherit = false})
```
-通过显示设置inherit配置,来告诉xmake,这两个依赖的配置是否需要被继承,如果不设置,默认就是启用继承的。
+通过显式设置inherit配置,来告诉xmake,这两个依赖的配置是否需要被继承,如果不设置,默认就是启用继承的。
-<p class="warning">
-需要注意的是`add_includedirs()`不会被依赖继承,因为子目录的头文件搜索路径是私有的,反而污染父目标搜索路径,只有`add_headers`指定的导出头文件所在目录才会被继承。
-</p>
+2.2.5版本之后,可通过 `add_includedirs("inc1", {public = true})`, 设置public为true, 将includedirs的设置公开给其他依赖的子target继承。
+
+目前对于target的编译链接flags相关接口设置,都是支持继承属性的,可以人为控制是否需要导出给其他target来依赖继承,目前支持的属性有:
+
+| 属性 | 描述 |
+| ---- | ---- |
+| private | 默认设置,作为当前target的私有配置,不会被依赖的其他target所继承 |
+| public | 公有配置,当前target,依赖的子target都会被设置 |
+| interface | 接口设置,仅被依赖的子target所继承设置,当前target不参与 |
+
+对于这块的详细说明,可以看下:https://github.com/xmake-io/xmake/issues/368
##### target:add_links
@@ -2194,6 +2195,10 @@ target("test")
###### 添加安装的头文件
+<p class="warning">
+注,2.2.5版本之后,此接口已废弃,请使用[add_headerfiles](#targetadd_headerfiles)代替。
+</p>
+
安装指定的头文件到build目录,如果设置了[set_headerdir](#targetset_headerdir), 则输出到指定目录。
安装规则的语法跟[add_files](#targetadd_files)类似,例如:
@@ -2279,6 +2284,21 @@ target("test")
当然也可以直接通过[add_cxflags](#targetadd_cxflags)或者[add_mxflags](#targetadd_mxflags)等接口来设置,也是可以的。
+2.2.5之后,可通过额外的`{public|interface = true}`属性设置,将includedirs导出给依赖的子target,例如:
+
+```lua
+target("test")
+ set_kind("static")
+ add_includedirs("src/include") -- 仅对当前target生效
+ add_includedirs("$(buildir)/include", {public = true}),当前target和子target都会被设置
+
+target("demo")
+ set_kind("binary")
+ add_deps("test")
+```
+
+更多关于这块的说明,见:[add_deps](#targetadd_deps)
+
<p class="tip">
如果不想在工程中写死,可以通过:`xmake f --includedirs=xxx`或者`xmake f --cxflags="-I/xxx"`的方式来设置,当然这种手动设置的目录搜索优先级更高。
</p>
@@ -2313,12 +2333,20 @@ add_undefines("DEBUG")
###### 添加宏定义到头文件
+<p class="warning">
+2.2.5版本之后,此接口已废弃,请使用[add_configfiles](#targetadd_configfiles)。
+</p>
+
添加宏定义到`config.h`配置文件,`config.h`的设置,可参考[set_config_h](#targetset_config_h)接口。
##### target:add_undefines_h
###### 取消宏定义到头文件
+<p class="warning">
+2.2.5版本之后,此接口已废弃,请使用[add_configfiles](#targetadd_configfiles)。
+</p>
+
在`config.h`配置文件中通过`undef`禁用宏定义,`config.h`的设置,可参考[set_config_h](#targetset_config_h)接口。
##### target:add_cflags