diff options
| author | ruki <[email protected]> | 2022-10-18 22:30:16 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-10-18 22:30:16 +0800 |
| commit | 5339aa483ec9afccfad3281f6ed8117d2a097795 (patch) | |
| tree | bfed6b277fcaa70a7e0670cc24d34a710f2b3933 | |
| parent | 123086c6e378ee5232158ef1d63d9669f29d3f5b (diff) | |
improve to get values from packages
| -rw-r--r-- | xmake/core/project/target.lua | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua index d879f656a..1d8dde40e 100644 --- a/xmake/core/project/target.lua +++ b/xmake/core/project/target.lua @@ -414,24 +414,32 @@ end function _instance:get_from_pkgs(name, opt) local values = {} for _, pkg in ipairs(self:orderpkgs(opt)) do - -- uses them instead of the builtin configs if exists extra package config - -- e.g. `add_packages("xxx", {links = "xxx"})` local configinfo = self:pkgconfig(pkg:name()) + -- get values from package components + -- e.g. `add_packages("sfml", {components = {"graphics", "window"}})` if configinfo and configinfo.components then local components = table.wrap(pkg:get("components")) + local components_values = {} for _, component_name in ipairs(table.wrap(configinfo.components)) do local info = components[component_name] if info then - table.join2(values, info[name] or pkg:get(name)) + table.join2(components_values, info[name])-- or pkg:get(name)) else local components_str = table.concat(table.wrap(configinfo.components), ", ") utils.warning("unknown component(%s) in add_packages(%s, {components = {%s}})", component_name, pkg:name(), components_str) end end + if #components_values > 0 then + table.join2(values, components_values) + else + table.join2(values, pkg:get(name)) + end + -- get values instead of the builtin configs if exists extra package config + -- e.g. `add_packages("xxx", {links = "xxx"})` elseif configinfo and configinfo[name] then table.join2(values, configinfo[name]) else - -- uses the builtin package configs + -- get values from the builtin package configs table.join2(values, pkg:get(name)) end end |
