diff options
| author | ruki <[email protected]> | 2019-02-11 22:35:12 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-02-11 09:31:14 +0800 |
| commit | 25bd4311c541cbf6329b8a309d8d47ceeaee5184 (patch) | |
| tree | 6bb22bd3f2481f1693eb2c48e248269063c51eb0 | |
| parent | b4763becbdab9433f46b96793c64968cc1f34241 (diff) | |
mark set_modes as deprecated
| -rw-r--r-- | CHANGELOG.md | 2 | ||||
| -rw-r--r-- | xmake/core/project/deprecated/project.lua | 21 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/project/project.lua | 11 |
3 files changed, 33 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ffa1eb5f..e30870954 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ * [#327](https://github.com/xmake-io/xmake/issues/327): Support conan package manager for `lib.detect.find_package` * [#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 ### Bugs fixed @@ -574,6 +575,7 @@ * [#327](https://github.com/xmake-io/xmake/issues/327): 改进`lib.detect.find_package`增加对conan包管理器的支持 * [#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")`来替代它 ### Bugs修复 diff --git a/xmake/core/project/deprecated/project.lua b/xmake/core/project/deprecated/project.lua index a7df6594c..45353098b 100644 --- a/xmake/core/project/deprecated/project.lua +++ b/xmake/core/project/deprecated/project.lua @@ -101,6 +101,24 @@ function deprecated_project._api_add_packages(interp, ...) return deprecated_project._api_add_pkgs(interp, ...) end +-- set modes +function deprecated_project._api_set_modes(interp, ...) + + -- get api function + local apifunc = interp:api_func("set_modes") + assert(apifunc) + + -- register api + interp:api_register_builtin("set_modes", function (...) + + -- deprecated + deprecated.add("add_rules(\"mode.debug\", \"mode.release\")", "set_modes(\"debug\", \"release\")") + + -- dispatch it + apifunc(...) + end) +end + -- add_csnippet/add_cxxsnippet for option function deprecated_project._api_option_add_cxsnippet(interp, apiname) @@ -244,6 +262,9 @@ function deprecated_project.api_register(interp) -- register api: is_option() to root interp:api_register(nil, "is_option", deprecated_project._api_is_option) + -- register api: set_modes() to root + deprecated_project._api_set_modes(interp) + -- register api: add_csnippet/add_cxxsnippet() to option deprecated_project._api_option_add_cxsnippet(interp, "add_csnippet") deprecated_project._api_option_add_cxsnippet(interp, "add_cxxsnippet") diff --git a/xmake/core/sandbox/modules/import/core/project/project.lua b/xmake/core/sandbox/modules/import/core/project/project.lua index a5b3d829d..448ab75a1 100644 --- a/xmake/core/sandbox/modules/import/core/project/project.lua +++ b/xmake/core/sandbox/modules/import/core/project/project.lua @@ -169,7 +169,16 @@ end -- get the project modes function sandbox_core_project.modes() - return project.get("modes") + local modes = project.get("modes") or {} + for _, target in pairs(table.wrap(project.targets())) do + for _, rule in ipairs(target:orderules()) do + local name = rule:name() + if name:startswith("mode.") then + table.insert(modes, name:sub(6)) + end + end + end + return table.unique(modes) end -- get the the given require info |
