diff options
| author | ruki <[email protected]> | 2021-08-06 00:50:23 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-08-06 00:50:23 +0800 |
| commit | d467cd6844b9736418e1f447d8c01307044e0e8d (patch) | |
| tree | acf126c4bf09de794f36487f3b9e1393087dd2f3 | |
| parent | a959af20d2a34038efb13053c112ef1d55084081 (diff) | |
improve find_package
| -rw-r--r-- | xmake/modules/package/manager/xmake/find_package.lua | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/xmake/modules/package/manager/xmake/find_package.lua b/xmake/modules/package/manager/xmake/find_package.lua index dab32de33..9f565c2b1 100644 --- a/xmake/modules/package/manager/xmake/find_package.lua +++ b/xmake/modules/package/manager/xmake/find_package.lua @@ -73,38 +73,32 @@ function _find_package_from_repo(name, opt) local links = {} local linkdirs = {} local libfiles = {} - for _, linkdir in ipairs(vars.linkdirs) do - table.insert(linkdirs, path.join(installdir, linkdir)) - end if vars.links then table.join2(links, vars.links) - end - if not vars.linkdirs or not vars.links then + else + -- we scan links automatically local found = false - for _, file in ipairs(os.files(path.join(installdir, "lib", "*"))) do - if file:endswith(".lib") or file:endswith(".a") then - found = true - if not vars.linkdirs then - table.insert(linkdirs, path.directory(file)) - end - if not vars.links then + for _, libdir in ipairs(vars.linkdirs or "lib") do + for _, file in ipairs(os.files(path.join(installdir, libdir, "*"))) do + if file:endswith(".lib") or file:endswith(".a") then + found = true table.insert(links, target.linkname(path.filename(file))) end end - end - if not found then - for _, file in ipairs(os.files(path.join(installdir, "lib", "*"))) do - if file:endswith(".so") or file:endswith(".dylib") then - if not vars.linkdirs then - table.insert(linkdirs, path.directory(file)) - end - if not vars.links then + if not found then + for _, file in ipairs(os.files(path.join(installdir, "lib", "*"))) do + if file:endswith(".so") or file:endswith(".dylib") then table.insert(links, target.linkname(path.filename(file))) end end end end end + if #links > 0 then + for _, libdir in ipairs(vars.linkdirs or "lib") do + table.insert(linkdirs, path.join(installdir, libdir)) + end + end if opt.plat == "windows" then for _, file in ipairs(os.files(path.join(installdir, "lib", "*.dll"))) do result.shared = true |
