diff options
| -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()) |
