diff options
| author | ruki <[email protected]> | 2024-10-21 22:55:32 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-10-21 22:55:32 +0800 |
| commit | 9c42ce00a2aba9448699626b3cfb290c88c0e542 (patch) | |
| tree | 17f0311daa1c0502501ae5196eaebfcc44804e47 | |
| parent | cb6f7672a99ed0f72de045b435127d2205fd016b (diff) | |
support config array for add_requires #5727
| -rw-r--r-- | xmake/modules/private/action/require/impl/package.lua | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/xmake/modules/private/action/require/impl/package.lua b/xmake/modules/private/action/require/impl/package.lua index 86df86bfb..721025344 100644 --- a/xmake/modules/private/action/require/impl/package.lua +++ b/xmake/modules/private/action/require/impl/package.lua @@ -88,6 +88,7 @@ end -- simply configs as string: -- add_requires("boost[iostreams,system,thread,key=value] >=1.78.0") -- add_requires("boost[iostreams,thread=n] >=1.78.0") +-- add_requires("libplist[shared,debug,codecs=[foo,bar,zoo]]") -- function _parse_require(require_str) @@ -148,14 +149,19 @@ function _load_require(require_str, requires_extra, parentinfo) require_extra = requires_extra[require_str] or {} end + -- parse configs from package name -- @see https://github.com/xmake-io/xmake/issues/5727#issuecomment-2421040107 -- -- e.g. -- add_requires("boost[iostreams,system,thread,key=value] >=1.78.0") + -- add_requires("libplist[shared,debug,codecs=[foo,bar,zoo]]") -- - local packagename_raw, configs_str = packagename:match("(.+)%[(.+)%]") + local packagename_raw, configs_str = packagename:match("(.-)%[(.*)%]") if packagename_raw and configs_str then + configs_str = configs_str:gsub("%[(.*)%]", function (w) + return w:replace(",", ":") + end) packagename = packagename_raw local splitinfo = configs_str:split(",", {plain = true}) for _, v in ipairs(splitinfo) do @@ -165,7 +171,11 @@ function _load_require(require_str, requires_extra, parentinfo) require_extra.configs = require_extra.configs or {} local configs = require_extra.configs if v then - configs[k] = option.boolean(v) + if v:find(":", 1 ,true) then + configs[k] = v:split(":", {plain = true}) + else + configs[k] = option.boolean(v) + end else configs[k] = true end |
