summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2023-08-02 22:39:14 +0800
committerruki <[email protected]>2023-08-02 22:39:14 +0800
commita27745121cc4ce14d3c4523086a0cb5a4f1a86a8 (patch)
tree344666fb35f6aaac698860795919dd82b5cc1fa6
parentd16429096b505a26688970ddeeadaf0bf5309a9c (diff)
fix vcpkg find_package with version
-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