summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-02-18 22:43:56 +0800
committerruki <[email protected]>2019-02-18 10:23:40 +0800
commitb9c0378a2ce66a42069fad967c40d6a0289b1cdf (patch)
tree28646c2763312e00d9cacf4996d0a6f621fe99ab
parente1ab1e11d67af8fc4dfa76e3586a7531af87f777 (diff)
add default variable for configfiles
-rw-r--r--CHANGELOG.md2
-rw-r--r--tests/apis/add_configfiles/config2.h.in2
-rw-r--r--xmake/actions/config/configfiles.lua19
3 files changed, 22 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a45e336c1..13734c167 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,6 +28,7 @@
* [#319](https://github.com/xmake-io/xmake/issues/319): Add `add_headerfiles` and `add_headerdirs` to improve to set header files and directories
* Improve `lib.detect.find_package` and add builtin `find_packages("zlib 1.x", "openssl", {xxx = ...})` api
* Mark `set_modes()` as deprecated, we use `add_rules("mode.debug", "mode.release")` instead of it
+* [#353](https://github.com/xmake-io/xmake/issues/353) Improve `target:set`, `target:add` and add `target:del` to modify target configuration
### Bugs fixed
@@ -578,6 +579,7 @@
* [#319](https://github.com/xmake-io/xmake/issues/319): 添加`add_headerfiles`和`add_headerdirs`接口去改进头文件的设置
* 改进`lib.detect.find_package`并且添加内建的`find_packages("zlib 1.x", "openssl", {xxx = ...})`接口
* 标记`set_modes()`作为废弃接口, 我们使用`add_rules("mode.debug", "mode.release")`来替代它
+* [#353](https://github.com/xmake-io/xmake/issues/353) 改进`target:set`, `target:add` 并且添加`target:del`去动态修改target配置
### Bugs修复
diff --git a/tests/apis/add_configfiles/config2.h.in b/tests/apis/add_configfiles/config2.h.in
index eec2d90ac..a4e457d4c 100644
--- a/tests/apis/add_configfiles/config2.h.in
+++ b/tests/apis/add_configfiles/config2.h.in
@@ -8,3 +8,5 @@
@define FOO2_ENABLE@
@define FOO2_ENABLE2@
@define FOO2_STRING@
+
+@default default_test 0@
diff --git a/xmake/actions/config/configfiles.lua b/xmake/actions/config/configfiles.lua
index 936a881fe..ae47b6525 100644
--- a/xmake/actions/config/configfiles.lua
+++ b/xmake/actions/config/configfiles.lua
@@ -184,11 +184,22 @@ function _generate_configfile(srcfile, dstfile, fileinfo, targets)
-- is ${define variable}?
local isdefine = false
- if variable:startswith("define") then
+ if variable:startswith("define ") then
variable = variable:split("%s+")[2]
isdefine = true
end
+ -- is ${default variable xxx}?
+ local default = nil
+ local isdefault = false
+ if variable:startswith("default ") then
+ local varinfo = variable:split("%s+")
+ variable = varinfo[2]
+ default = varinfo[3]
+ isdefault = true
+ assert(default ~= nil, "please set default value for variable(%s)", variable)
+ end
+
-- get variable value
local value = variables[variable]
if isdefine then
@@ -207,6 +218,12 @@ function _generate_configfile(srcfile, dstfile, fileinfo, targets)
else
raise("unknown variable(%s) type: %s", variable, type(value))
end
+ elseif isdefault then
+ if value == nil then
+ value = default
+ else
+ value = tostring(value)
+ end
else
assert(value ~= nil, "cannot get variable(%s) in %s.", variable, srcfile)
end