diff options
| author | ruki <[email protected]> | 2024-05-14 00:52:47 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-05-14 00:52:47 +0800 |
| commit | 3cf9f4d5b831280e2668557a09f0e21441f41802 (patch) | |
| tree | 35232883623058d1c5f58663dc299818d6a15355 | |
| parent | 7b61af9bfeab6bd8d7dcc33baba3607abaa03928 (diff) | |
improve package links
| -rw-r--r-- | xmake/core/project/target.lua | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua index 1cc0c0093..58c5c89d9 100644 --- a/xmake/core/project/target.lua +++ b/xmake/core/project/target.lua @@ -303,14 +303,17 @@ end -- get values from target packages with {interface|public = ...} function _instance:_get_from_packages(name, result_values, result_sources, opt) + local function _filter_libfiles(libfiles) + local result = {} + for _, libfile in ipairs(table.wrap(libfiles)) do + if not libfile:endswith(".dll") then + table.insert(result, libfiles) + end + end + return table.unwrap(result) + end for _, pkg in ipairs(self:orderpkgs(opt)) do - -- use full link path instead of links - -- @see https://github.com/xmake-io/xmake/issues/5066 - local valuename = name local configinfo = self:pkgconfig(pkg:name()) - if name == "links" and configinfo and configinfo.linkpath and pkg:get("libfiles") then - valuename = "libfiles" - end -- get values from package components -- e.g. `add_packages("sfml", {components = {"graphics", "window"}})` local selected_components = configinfo and configinfo.components or pkg:components_default() @@ -331,7 +334,16 @@ function _instance:_get_from_packages(name, result_values, result_sources, opt) if components_enabled:has(component_name) then local info = components[component_name] if info then - table.join2(values, info[valuename]) + local compvalues = info[name] + -- use full link path instead of links + -- @see https://github.com/xmake-io/xmake/issues/5066 + if name == "links" and configinfo and configinfo.linkpath then + local libfiles = info.libfiles + if libfiles then + compvalues = _filter_libfiles(libfiles) + end + end + table.join2(values, compvalues) 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) @@ -352,7 +364,15 @@ function _instance:_get_from_packages(name, result_values, result_sources, opt) end else -- get values from the builtin package configs - local values = pkg:get(valuename) + local values = pkg:get(name) + -- use full link path instead of links + -- @see https://github.com/xmake-io/xmake/issues/5066 + if name == "links" and configinfo and configinfo.linkpath then + local libfiles = pkg:libraryfiles() + if libfiles then + values = _filter_libfiles(libfiles) + end + end if values ~= nil then table.insert(result_values, values) table.insert(result_sources, "package::" .. pkg:name()) |
