summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2026-03-13 22:51:24 +0800
committerruki <[email protected]>2026-03-13 22:51:24 +0800
commit17442f8fa917430ccc95fb4cb0993ba64a06beb7 (patch)
tree0ad993cbdcf0dca9a9f256beb7868e3a41d83994
parent33c48ddc479f6332a4539144e9c1277801e99b85 (diff)
improve vcpkg utils
-rw-r--r--xmake/modules/package/manager/vcpkg/find_package.lua13
-rw-r--r--xmake/modules/package/manager/vcpkg/utils.lua14
2 files changed, 15 insertions, 12 deletions
diff --git a/xmake/modules/package/manager/vcpkg/find_package.lua b/xmake/modules/package/manager/vcpkg/find_package.lua
index 39254e6fa..7cc6af548 100644
--- a/xmake/modules/package/manager/vcpkg/find_package.lua
+++ b/xmake/modules/package/manager/vcpkg/find_package.lua
@@ -132,17 +132,6 @@ function _get_package_info(name, triplet, infodirs, arch, plat, mode)
return result
end
--- check if all required features are installed
--- @see https://github.com/xmake-io/xmake/issues/7388
-function _has_installed_features(vcpkg, name, triplet, required_features)
- for _, feature in ipairs(required_features) do
- if not vcpkg_utils.is_installed(vcpkg, name .. "[" .. feature .. "]", triplet) then
- return false
- end
- end
- return true
-end
-
function _find_package(vcpkg, vcpkgdir, name, opt)
-- get configs
@@ -182,7 +171,7 @@ function _find_package(vcpkg, vcpkgdir, name, opt)
-- check that required features are installed
-- @see https://github.com/xmake-io/xmake/issues/7388
- if required_features and not _has_installed_features(vcpkg, name, triplet, required_features) then
+ if required_features and not vcpkg_utils.has_installed_features(vcpkg, name, triplet, required_features) then
return
end
diff --git a/xmake/modules/package/manager/vcpkg/utils.lua b/xmake/modules/package/manager/vcpkg/utils.lua
index b7dd7237b..da321cda0 100644
--- a/xmake/modules/package/manager/vcpkg/utils.lua
+++ b/xmake/modules/package/manager/vcpkg/utils.lua
@@ -39,3 +39,17 @@ function is_installed(vcpkg, name, triplet)
end
return false
end
+
+-- check if all required features are installed
+-- e.g. has_installed_features(vcpkg, "curl", "x64-windows-static-md", {"openssl", "mbedtls"})
+--
+-- @see https://github.com/xmake-io/xmake/issues/7388
+--
+function has_installed_features(vcpkg, name, triplet, required_features)
+ for _, feature in ipairs(required_features) do
+ if not is_installed(vcpkg, name .. "[" .. feature .. "]", triplet) then
+ return false
+ end
+ end
+ return true
+end