diff options
| -rw-r--r-- | xmake/rules/qt/install/mingw.lua | 24 | ||||
| -rw-r--r-- | xmake/rules/qt/install/windows.lua | 24 |
2 files changed, 32 insertions, 16 deletions
diff --git a/xmake/rules/qt/install/mingw.lua b/xmake/rules/qt/install/mingw.lua index 4e3fe6d19..2cd41e5bb 100644 --- a/xmake/rules/qt/install/mingw.lua +++ b/xmake/rules/qt/install/mingw.lua @@ -26,18 +26,25 @@ import("lib.detect.find_path") import("lib.detect.find_file") import("detect.sdks.find_qt") --- get install directory -function _get_installdir(target) - local installdir = assert(target:installdir(), "please use `xmake install -o installdir` or `set_installdir` to set install directory on windows.") - return installdir +-- get bin directory, if set_prefixdir changed bindir, we should use bindir +function _get_bindir(target) + local bindir = assert(target:bindir(), "please use `xmake install -o installdir` or `set_installdir` to set install directory on windows.") + return bindir end -- install application package for windows function main(target, opt) - local targetfile = target:targetfile() - local installdir = _get_installdir(target) - local installfile = path.join(installdir, "bin", path.filename(targetfile)) + local bindir = _get_bindir(target) + local targetfile = path.join(bindir, path.filename(target:targetfile())) + local installfiles = {} + table.insert(installfiles, targetfile) + for _, t in ipairs(target:orderdeps()) do + if t:rules()["qt.shared"] then -- qt.shared deps + local installfile = path.join(bindir, path.filename(t:targetfile())) + table.insert(installfiles, installfile) + end + end -- get qt sdk local qt = assert(find_qt(), "Qt SDK not found!") @@ -104,7 +111,8 @@ function main(target, opt) argv = table.join(argv, user_flags) end - table.insert(argv, installfile) + -- windeployqt for both target and its deps + table.join2(argv, installfiles) os.vrunv(windeployqt, argv, {envs = envs}) end diff --git a/xmake/rules/qt/install/windows.lua b/xmake/rules/qt/install/windows.lua index 0eca909e9..1c44b8afc 100644 --- a/xmake/rules/qt/install/windows.lua +++ b/xmake/rules/qt/install/windows.lua @@ -26,18 +26,25 @@ import("lib.detect.find_file") import("lib.detect.find_path") import("detect.sdks.find_qt") --- get install directory -function _get_installdir(target) - local installdir = assert(target:installdir(), "please use `xmake install -o installdir` or `set_installdir` to set install directory on windows.") - return installdir +-- get bin directory, if set_prefixdir changed bindir, we should use bindir +function _get_bindir(target) + local bindir = assert(target:bindir(), "please use `xmake install -o installdir` or `set_installdir` to set install directory on windows.") + return bindir end -- install application package for windows function main(target, opt) - local targetfile = target:targetfile() - local installdir = _get_installdir(target) - local installfile = path.join(installdir, "bin", path.filename(targetfile)) + local bindir = _get_bindir(target) + local targetfile = path.join(bindir, path.filename(target:targetfile())) + local installfiles = {} + table.insert(installfiles, targetfile) + for _, t in ipairs(target:orderdeps()) do + if t:rules()["qt.shared"] then -- qt.shared deps + local installfile = path.join(bindir, path.filename(t:targetfile())) + table.insert(installfiles, installfile) + end + end -- get qt sdk local qt = assert(find_qt(), "Qt SDK not found!") @@ -120,7 +127,8 @@ function main(target, opt) argv = table.join(argv, user_flags) end - table.insert(argv, installfile) + -- windeployqt for both target and its deps + table.join2(argv, installfiles) os.vrunv(windeployqt, argv, {envs = envs}) end |
