summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xmake/modules/package/manager/vcpkg/find_package.lua7
1 files changed, 5 insertions, 2 deletions
diff --git a/xmake/modules/package/manager/vcpkg/find_package.lua b/xmake/modules/package/manager/vcpkg/find_package.lua
index c3e18f0c4..1855da2f2 100644
--- a/xmake/modules/package/manager/vcpkg/find_package.lua
+++ b/xmake/modules/package/manager/vcpkg/find_package.lua
@@ -154,9 +154,12 @@ function _find_package(vcpkgdir, name, opt)
-- save version
if result then
local infoname = path.basename(infofile)
- result.version = infoname:match(name .. "_(%d+%.?%d*%.?%d*.-)_" .. arch)
+ local prefix = name
+ -- name maybe contains lua pattern characters, we need escape it. e.g. `-`
+ prefix = prefix:gsub("([%+%.%-%^%$%(%)%%])", "%%%1")
+ result.version = infoname:match(prefix .. "_(%d+%.?%d*%.?%d*.-)_" .. arch)
if not result.version then
- result.version = infoname:match(name .. "_(%d+%.?%d*%.-)_" .. arch)
+ result.version = infoname:match(prefix .. "_(%d+%.?%d*%.-)_" .. arch)
end
end