summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérôme Leclercq <[email protected]>2020-12-17 11:01:06 +0100
committerJérôme Leclercq <[email protected]>2020-12-17 11:01:06 +0100
commit9892551ea98b29ee5ae594491ff4dd58565c26ce (patch)
tree09acd45d0783391e6df64a31e1e52af0ffafe324
parente95f99d7d99daf3c065dd04d457b2a8a81545380 (diff)
Add support for windeployqt for Qt project install
-rw-r--r--xmake/rules/qt/install/windows.lua86
-rw-r--r--xmake/rules/qt/xmake.lua6
2 files changed, 92 insertions, 0 deletions
diff --git a/xmake/rules/qt/install/windows.lua b/xmake/rules/qt/install/windows.lua
new file mode 100644
index 000000000..9d0038fc1
--- /dev/null
+++ b/xmake/rules/qt/install/windows.lua
@@ -0,0 +1,86 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+--
+-- Copyright (C) 2015-2020, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file macosx.lua
+--
+
+-- imports
+import("core.theme.theme")
+import("core.base.option")
+import("core.project.config")
+import("core.project.depend")
+import("detect.sdks.find_vstudio")
+import("private.utils.progress")
+
+-- install application package for windows
+function main(target, opt)
+
+ local targetfile = target:targetfile()
+ local installfile = path.join(target:installdir(), "bin", path.filename(targetfile))
+
+ -- need re-generate this app?
+ local dependfile = target:dependfile(targetfile)
+
+ depend.on_changed(function ()
+ -- do deploy
+
+ -- get qt sdk
+ local qt = target:data("qt")
+
+ -- get windeployqt
+ local windeployqt = path.join(qt.bindir, "windeployqt.exe")
+ assert(os.isexec(windeployqt), "windeployqt.exe not found!")
+
+ -- find qml directory
+ local qmldir = nil
+ for _, sourcebatch in pairs(target:sourcebatches()) do
+ if sourcebatch.rulename == "qt.qrc" then
+ for _, sourcefile in ipairs(sourcebatch.sourcefiles) do
+ qmldir = find_path("*.qml", path.directory(sourcefile))
+ if qmldir then
+ break
+ end
+ end
+ end
+ end
+
+ -- find msvc to set VCINSTALLDIR env
+ local envs = nil
+ local msvc = toolchain.load("msvc", {plat = target:plat(), arch = target:arch()})
+ if msvc then
+ local vcvars = msvc:config("vcvars")
+ if vcvars and vcvars.VSInstallDir then
+ envs = {VCINSTALLDIR = path.join(vcvars.VSInstallDir, "VC")}
+ end
+ end
+
+ local argv = {"--force"}
+ if option.get("diagnosis") then
+ table.insert(argv, "--verbose=2")
+ elseif option.get("verbose") then
+ table.insert(argv, "--verbose=1")
+ else
+ table.insert(argv, "--verbose=0")
+ end
+ if qmldir then
+ table.insert(argv, "--qmldir=" .. qmldir)
+ end
+ table.insert(argv, installfile)
+
+ os.vrunv(windeployqt, argv, {envs = envs})
+ end, {dependfile = dependfile, files = targetfile})
+end
diff --git a/xmake/rules/qt/xmake.lua b/xmake/rules/qt/xmake.lua
index afcaa7e83..07d59b31b 100644
--- a/xmake/rules/qt/xmake.lua
+++ b/xmake/rules/qt/xmake.lua
@@ -75,6 +75,8 @@ rule("qt.console")
import("load")(target, {frameworks = {"QtCore"}})
end)
+ after_install("windows", "install.windows")
+
-- define rule: qt widgetapp
rule("qt.widgetapp")
add_deps("qt.ui", "qt.moc", "qt._wasm_app", "qt.qrc")
@@ -94,6 +96,7 @@ rule("qt.widgetapp")
-- install application for android
on_install("android", "install.android")
+ after_install("windows", "install.windows")
-- define rule: qt static widgetapp
rule("qt.widgetapp_static")
@@ -143,6 +146,7 @@ rule("qt.widgetapp_static")
-- install application for android
on_install("android", "install.android")
+ after_install("windows", "install.windows")
-- define rule: qt quickapp
rule("qt.quickapp")
@@ -163,6 +167,7 @@ rule("qt.quickapp")
-- install application for android
on_install("android", "install.android")
+ after_install("windows", "install.windows")
-- define rule: qt static quickapp
rule("qt.quickapp_static")
@@ -212,6 +217,7 @@ rule("qt.quickapp_static")
-- install application for android
on_install("android", "install.android")
+ after_install("windows", "install.windows")
-- define rule: qt application (deprecated)
rule("qt.application")