aboutsummaryrefslogtreecommitdiff
path: root/zh
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2017-11-10 21:00:00 +0800
committerruki <waruqi@gmail.com>2017-11-10 00:00:01 +0800
commitb293a24dcd69088f467d51262658f2346616036e (patch)
treee3fd0ca1b2310bb2b0be0330f053850d513f09a8 /zh
parenteadcb396b9aeff6fd90b098468e153431b4fc1c5 (diff)
downloadxmake-docs-b293a24dcd69088f467d51262658f2346616036e.tar.gz
xmake-docs-b293a24dcd69088f467d51262658f2346616036e.zip
update docs and add del_files api
Diffstat (limited to 'zh')
-rw-r--r--zh/README.md36
-rw-r--r--zh/manual.md30
2 files changed, 66 insertions, 0 deletions
diff --git a/zh/README.md b/zh/README.md
index ffbc6c0e..2cb2e1ef 100644
--- a/zh/README.md
+++ b/zh/README.md
@@ -549,6 +549,12 @@ $ xmake f -p linux --sdk=/user/toolsdk --as=armv7-linux-as
如果存在`AS`环境变量的话,会优先使用当前环境变量中指定的值。
+<p class="tips">
+如果指定的编译器名不是那些xmake内置可识别的名字(带有gcc, clang等字样),那么编译器工具检测就会失败。
+这个时候我们可以通过:`xmake f --as=gcc@/home/xxx/asmips.exe` 设置ccmips.exe编译器作为类gcc的使用方式来编译。
+也就是说,在指定编译器为`asmips.exe`的同时,告诉xmake,它跟gcc用法和参数选项基本相同。
+</p>
+
###### --cc
- 设置c编译器
@@ -561,6 +567,12 @@ $ xmake f -p linux --sdk=/user/toolsdk --cc=armv7-linux-clang
如果存在`CC`环境变量的话,会优先使用当前环境变量中指定的值。
+<p class="tips">
+如果指定的编译器名不是那些xmake内置可识别的名字(带有gcc, clang等字样),那么编译器工具检测就会失败。
+这个时候我们可以通过:`xmake f --cc=gcc@/home/xxx/ccmips.exe` 设置ccmips.exe编译器作为类gcc的使用方式来编译。
+也就是说,在指定编译器为`ccmips.exe`的同时,告诉xmake,它跟gcc用法和参数选项基本相同。
+</p>
+
###### --cxx
- 设置`c++`编译器
@@ -573,6 +585,12 @@ $ xmake f -p linux --sdk=/user/toolsdk --cxx=armv7-linux-clang++
如果存在`CXX`环境变量的话,会优先使用当前环境变量中指定的值。
+<p class="tips">
+如果指定的编译器名不是那些xmake内置可识别的名字(带有gcc, clang等字样),那么编译器工具检测就会失败。
+这个时候我们可以通过:`xmake f --cxx=clang++@/home/xxx/c++mips.exe` 设置c++mips.exe编译器作为类clang++的使用方式来编译。
+也就是说,在指定编译器为`c++mips.exe`的同时,告诉xmake,它跟clang++用法和参数选项基本相同。
+</p>
+
###### --ld
- 设置`c/c++/objc/asm`链接器
@@ -585,6 +603,12 @@ $ xmake f -p linux --sdk=/user/toolsdk --ld=armv7-linux-clang++
如果存在`LD`环境变量的话,会优先使用当前环境变量中指定的值。
+<p class="tips">
+如果指定的编译器名不是那些xmake内置可识别的名字(带有gcc, clang等字样),那么链接器工具检测就会失败。
+这个时候我们可以通过:`xmake f --ld=g++@/home/xxx/c++mips.exe` 设置c++mips.exe链接器作为类g++的使用方式来编译。
+也就是说,在指定链接器为`c++mips.exe`的同时,告诉xmake,它跟g++用法和参数选项基本相同。
+</p>
+
###### --sh
- 设置`c/c++/objc/asm`共享库链接器
@@ -595,6 +619,12 @@ $ xmake f -p linux --sdk=/user/toolsdk --sh=armv7-linux-clang++
如果存在`SH`环境变量的话,会优先使用当前环境变量中指定的值。
+<p class="tips">
+如果指定的编译器名不是那些xmake内置可识别的名字(带有gcc, clang等字样),那么链接器工具检测就会失败。
+这个时候我们可以通过:`xmake f --sh=g++@/home/xxx/c++mips.exe` 设置c++mips.exe链接器作为类g++的使用方式来编译。
+也就是说,在指定链接器为`c++mips.exe`的同时,告诉xmake,它跟g++用法和参数选项基本相同。
+</p>
+
###### --ar
- 设置`c/c++/objc/asm`静态库归档器
@@ -605,6 +635,12 @@ $ xmake f -p linux --sdk=/user/toolsdk --ar=armv7-linux-ar
如果存在`AR`环境变量的话,会优先使用当前环境变量中指定的值。
+<p class="tips">
+如果指定的编译器名不是那些xmake内置可识别的名字(带有ar等字样),那么链接器工具检测就会失败。
+这个时候我们可以通过:`xmake f --ar=ar@/home/xxx/armips.exe` 设置armips.exe链接器作为类ar的使用方式来编译。
+也就是说,在指定链接器为`armips.exe`的同时,告诉xmake,它跟ar用法和参数选项基本相同。
+</p>
+
#### 全局配置
我们也可以将一些常用配置保存到全局配置中,来简化频繁地输入:
diff --git a/zh/manual.md b/zh/manual.md
index 3a1ce532..58df082b 100644
--- a/zh/manual.md
+++ b/zh/manual.md
@@ -537,6 +537,7 @@ target("test2")
| [add_deps](#targetadd_deps) | 添加子工程目标依赖 | >= 1.0.1 |
| [add_links](#targetadd_links) | 添加链接库名 | >= 1.0.1 |
| [add_files](#targetadd_files) | 添加源代码文件 | >= 1.0.1 |
+| [del_files](#targetdel_files) | 从前面的源文件列表中删除指定文件 | >= 2.1.9 |
| [add_headers](#targetadd_headers) | 添加安装的头文件 | >= 1.0.1 |
| [add_linkdirs](#targetadd_linkdirs) | 添加链接库搜索目录 | >= 1.0.1 |
| [add_rpathdirs](#targetadd_rpathdirs) | 添加运行时候动态链接库搜索目录 | >= 2.1.3 |
@@ -1580,6 +1581,35 @@ target("test")
可以在`add_files`的最后一个参数,传入一个配置table,去控制指定files的编译选项,里面的配置参数跟target的一致,并且这些文件还会继承target的通用配置`-DTEST1`。
+##### target:del_files
+
+###### 从前面的源代码文件列表中删除指定文件
+
+通过此接口,可以从前面[add_files](targetadd_files)接口添加的文件列表中,删除指定的文件,例如:
+
+```lua
+target("test")
+ add_files("src/*.c")
+ del_files("src/test.c")
+```
+
+上面的例子,可以从`src`目录下添加除`test.c`以外的所有文件,当然这个也可以通过`add_files("src/*.c|test.c")`来达到相同的目的,但是这种方式更加灵活。
+
+例如,我们可以条件判断来控制删除哪些文件,并且此接口也支持[add_files](targetadd_files)的匹配模式,过滤模式,进行批量移除。
+
+```lua
+target("test")
+ add_files("src/**.c")
+ del_files("src/test*.c")
+ del_files("src/subdir/*.c|xxx.c")
+ if is_plat("iphoneos") then
+ add_files("xxx.m")
+ end
+```
+
+通过上面的例子,我们可以看出`add_files`和`del_files`是根据调用顺序,进行顺序添加和删除的,并且通过`del_files("src/subdir/*.c|xxx.c")`删除一批文件,
+并且排除`src/subdir/xxx.c`(就是说,不删除这个文件)。
+
##### target:add_headers
###### 添加安装的头文件