From cc0dfe3d9eca8e11bb6c555c36edf3117d80559a Mon Sep 17 00:00:00 2001 From: ruki Date: Tue, 23 Aug 2022 22:33:47 +0800 Subject: fix load framework --- xmake/rules/xcode/application/build.lua | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'xmake/rules/xcode/application/build.lua') diff --git a/xmake/rules/xcode/application/build.lua b/xmake/rules/xcode/application/build.lua index bb4ca080b..b39c3546e 100644 --- a/xmake/rules/xcode/application/build.lua +++ b/xmake/rules/xcode/application/build.lua @@ -31,11 +31,13 @@ import("utils.progress") -- os.vcp(frameworkdir, frameworksdir, {symlink = true}) function _copy_frameworks(frameworkdir, frameworksdir) os.mkdir(frameworksdir) + local frameworkdir_dst = path.join(frameworksdir, path.filename(frameworkdir)) + os.tryrm(frameworkdir_dst) for _, filepath in ipairs(os.filedirs(path.join(frameworkdir, "*"))) do if path.filename(filepath) == "Versions" then - _copy_frameworks(filepath, path.join(frameworksdir, "Versions")) + _copy_frameworks(filepath, frameworkdir_dst) else - local dstpath = path.join(frameworksdir, path.filename(filepath)) + local dstpath = path.join(frameworkdir_dst, path.filename(filepath)) os.tryrm(dstpath) os.cp(filepath, dstpath, {symlink = true}) end @@ -64,6 +66,12 @@ function main (target, opt) end os.vcp(target:targetfile(), path.join(binarydir, path.filename(target:targetfile()))) + -- change rpath + -- @see https://github.com/xmake-io/xmake/issues/2679#issuecomment-1221839215 + local targetfile = path.join(binarydir, path.filename(target:targetfile())) + os.vrunv("install_name_tool", {"-delete_rpath", "@loader_path", targetfile}) + os.vrunv("install_name_tool", {"-add_rpath", "@executable_path/../Frameworks", targetfile}) + -- copy dependent dynamic libraries and frameworks for _, dep in ipairs(target:orderdeps()) do if dep:kind() == "shared" then -- cgit v1.3.1