-
我用下面的代码配置了一个 package,从NuGet上下载包下来解压安装,这个包提供了 x64 和 arm64 两个架构的dll库并且名字相同,因此我需要把 dll 复制到 bin 的子目录里,但是这样的话 xmake 不会把他们添加到 libfiles 里,这导致 install 的时候不会自动将 dll 一起复制过去。请问如何让 xmake 识别到子目录下的 dll package("WinPixEventRuntime")
add_urls("https://globalcdn.nuget.org/packages/winpixeventruntime.$(version).nupkg")
add_versions("1.0.230302001", "1cc9c6618a00f26375a8d98adba60620904fbf6a8e71007e14439ca01436589d")
add_includedirs("include")
add_links("WinPixEventRuntime")
add_linkdirs("lib/$(arch)")
on_install(function (package)
import("utils.archive")
-- Our working directory is `[packagename]/[version]/source/`
-- We just extract the nupkg file into `source` folder
if archive.extract(package:originfile(), "./", { extension=".zip" }) then
os.cp("bin/x64/*.lib", package:installdir("lib/x64/"))
os.cp("bin/ARM64/*.lib", package:installdir("lib/arm64/"))
os.cp("bin/x64/*.dll", package:installdir("bin/x64/"))
os.cp("bin/ARM64/*.dll", package:installdir("bin/arm64/"))
os.cp("Include/WinPixEventRuntime/**", package:installdir("include/WinPixEventRuntime"))
else
raise("cannot extract %s as zip", package:originfile())
end
end) |
Beta Was this translation helpful? Give feedback.
Answered by
waruqi
Jun 2, 2023
Replies: 1 comment 1 reply
-
会复制,但你安装的路径不对。。 安装到 一个包同时只能安装到一个 arch 。。不支持同时带多个arch 的二进制。。 x64/arm64 不同 arch 的安装目录原本就是独立分开的,不仅仅是 arch ,你只要包的plat/arch/mode/configs/versions等各种配置变动,都是存储在不同目录下,独立的。。没必要里面自己再加子目录。。xmake 怎么知道你加的子目录是啥,当然扫不出来了。。 |
Beta Was this translation helpful? Give feedback.
1 reply
Answer selected by
VirFunc
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
会复制,但你安装的路径不对。。
安装到
/lib
,/bin
目录,不要加 arm64/x64 这种子目录。。一个包同时只能安装到一个 arch 。。不支持同时带多个arch 的二进制。。
x64/arm64 不同 arch 的安装目录原本就是独立分开的,不仅仅是 arch ,你只要包的plat/arch/mode/configs/versions等各种配置变动,都是存储在不同目录下,独立的。。没必要里面自己再加子目录。。xmake 怎么知道你加的子目录是啥,当然扫不出来了。。