summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-09-08 22:48:59 +0800
committerruki <[email protected]>2019-09-08 22:48:59 +0800
commita930cd8e170ec0192d8e9a2fc21ea956a24f53f8 (patch)
treeb6beea6c8d4ee504a6b7a4c1ca490be7dd91e0b8
parent533b7ae2ee168d2be5f3df249712da0d9b141e40 (diff)
add qt.quickapp_static and qt.widgetapp_static
-rw-r--r--tests/projects/qt/quickapp_static/xmake.lua9
-rw-r--r--tests/projects/qt/widgetapp_static/xmake.lua9
-rw-r--r--xmake/rules/qt/load.lua17
-rw-r--r--xmake/rules/qt/xmake.lua56
-rw-r--r--xmake/templates/c++/quickapp_qt_static/project/xmake.lua9
-rw-r--r--xmake/templates/c++/widgetapp_qt_static/project/xmake.lua9
6 files changed, 77 insertions, 32 deletions
diff --git a/tests/projects/qt/quickapp_static/xmake.lua b/tests/projects/qt/quickapp_static/xmake.lua
index d670aa92d..563851141 100644
--- a/tests/projects/qt/quickapp_static/xmake.lua
+++ b/tests/projects/qt/quickapp_static/xmake.lua
@@ -9,7 +9,7 @@ includes("qt_add_static_plugins.lua")
target("qt_demo")
-- add rules
- add_rules("qt.quickapp")
+ add_rules("qt.quickapp_static")
-- add headers
add_headerfiles("src/*.h")
@@ -18,13 +18,6 @@ target("qt_demo")
add_files("src/*.cpp")
add_files("src/qml.qrc")
- -- add plugin: QXXXIntegrationPlugin
- if is_plat("macosx") then
- qt_add_static_plugins("QCocoaIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"qcocoa", "Qt5PrintSupport", "Qt5PlatformSupport", "Qt5Widgets", "cups"}})
- elseif is_plat("windows") then
- qt_add_static_plugins("QWindowsIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"Qt5PrintSupport", "Qt5PlatformSupport", "Qt5Widgets", "qwindows"}})
- end
-
-- add plugin: qml.QtQuick
qt_add_static_plugins("QtQuick2Plugin", {linkdirs = "qml/QtQuick.2", links = "qtquick2plugin"})
qt_add_static_plugins("QtQuick2WindowPlugin", {linkdirs = "qml/QtQuick/Window.2", links = "windowplugin"})
diff --git a/tests/projects/qt/widgetapp_static/xmake.lua b/tests/projects/qt/widgetapp_static/xmake.lua
index d435cc8b6..12fdd0715 100644
--- a/tests/projects/qt/widgetapp_static/xmake.lua
+++ b/tests/projects/qt/widgetapp_static/xmake.lua
@@ -9,7 +9,7 @@ includes("qt_add_static_plugins.lua")
target("qt_demo")
-- add rules
- add_rules("qt.widgetapp")
+ add_rules("qt.widgetapp_static")
-- add headers
add_headerfiles("src/*.h")
@@ -21,12 +21,5 @@ target("qt_demo")
-- add files with Q_OBJECT meta (only for qt.moc)
add_files("src/mainwindow.h")
- -- add plugin: QXXXIntegrationPlugin
- if is_plat("macosx") then
- qt_add_static_plugins("QCocoaIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"qcocoa", "Qt5PrintSupport", "Qt5PlatformSupport", "cups"}})
- elseif is_plat("windows") then
- qt_add_static_plugins("QWindowsIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"Qt5PrintSupport", "Qt5PlatformSupport", "qwindows"}})
- end
-
-- add plugin: QSvgPlugin (optional)
qt_add_static_plugins("QSvgPlugin", {linkdirs = "plugins/imageformats", links = {"qsvg", "Qt5Svg"}})
diff --git a/xmake/rules/qt/load.lua b/xmake/rules/qt/load.lua
index 6d24f2472..1246c5c3e 100644
--- a/xmake/rules/qt/load.lua
+++ b/xmake/rules/qt/load.lua
@@ -56,6 +56,19 @@ function _find_static_links(linkdirs, libpattern)
return links
end
+-- add plugins
+function _add_plugins(target, plugins)
+ for name, plugin in pairs(plugins) do
+ target:values_add("qt.plugins", name)
+ if plugin.links then
+ target:values_add("qt.links", unpack(table.wrap(plugin.links)))
+ end
+ if plugin.linkdirs then
+ target:values_add("qt.linkdirs", unpack(table.wrap(plugin.linkdirs)))
+ end
+ end
+end
+
-- the main entry
function main(target, opt)
@@ -105,6 +118,9 @@ function main(target, opt)
target:add("defines", "QT_DEPRECATED_WARNINGS")
-- add plugins
+ if opt.plugins then
+ _add_plugins(target, opt.plugins)
+ end
local plugins = target:values("qt.plugins")
if plugins then
local importfile = path.join(config.buildir(), ".qt", "plugin", target:name(), "static_import.cpp")
@@ -223,5 +239,6 @@ function main(target, opt)
target:add("ldflags", "-Wl,-subsystem:windows", {force = true})
end
end
+
end
diff --git a/xmake/rules/qt/xmake.lua b/xmake/rules/qt/xmake.lua
index 3f15b2930..ba805ffd2 100644
--- a/xmake/rules/qt/xmake.lua
+++ b/xmake/rules/qt/xmake.lua
@@ -88,6 +88,34 @@ rule("qt.widgetapp")
-- install application for android
on_install("android", "install.android")
+-- define rule: qt static widgetapp
+rule("qt.widgetapp_static")
+
+ -- add rules
+ add_deps("qt.ui", "qt.moc")
+
+ -- we must set kind before target.on_load(), may we will use target in on_load()
+ before_load(function (target)
+ target:set("kind", is_plat("android") and "shared" or "binary")
+ end)
+
+ -- after load
+ after_load(function (target)
+ local plugins = {}
+ if is_plat("macosx") then
+ plugins.QCocoaIntegrationPlugin = {linkdirs = "plugins/platforms", links = {"qcocoa", "Qt5PrintSupport", "Qt5PlatformSupport", "cups"}}
+ elseif is_plat("windows") then
+ plugins.QWindowsIntegrationPlugin = {linkdirs = "plugins/platforms", links = {"Qt5PrintSupport", "Qt5PlatformSupport", "qwindows"}}
+ end
+ import("load")(target, {gui = true, plugins = plugins, frameworks = {"QtGui", "QtWidgets", "QtCore"}})
+ end)
+
+ -- deploy application for android after build
+ after_build("android", "deploy.android")
+
+ -- install application for android
+ on_install("android", "install.android")
+
-- define rule: qt quickapp
rule("qt.quickapp")
@@ -110,6 +138,34 @@ rule("qt.quickapp")
-- install application for android
on_install("android", "install.android")
+-- define rule: qt static quickapp
+rule("qt.quickapp_static")
+
+ -- add rules
+ add_deps("qt.qrc", "qt.moc")
+
+ -- we must set kind before target.on_load(), may we will use target in on_load()
+ before_load(function (target)
+ target:set("kind", is_plat("android") and "shared" or "binary")
+ end)
+
+ -- after load
+ after_load(function (target)
+ local plugins = {}
+ if is_plat("macosx") then
+ plugins.QCocoaIntegrationPlugin = {linkdirs = "plugins/platforms", links = {"qcocoa", "Qt5PrintSupport", "Qt5PlatformSupport", "Qt5Widgets", "cups"}}
+ elseif is_plat("windows") then
+ plugins.QWindowsIntegrationPlugin = {linkdirs = "plugins/platforms", links = {"Qt5PrintSupport", "Qt5PlatformSupport", "Qt5Widgets", "qwindows"}}
+ end
+ import("load")(target, {gui = true, plugins = plugins, frameworks = {"QtGui", "QtQuick", "QtQml", "QtCore"}})
+ end)
+
+ -- deploy application for android after build
+ after_build("android", "deploy.android")
+
+ -- install application for android
+ on_install("android", "install.android")
+
-- define rule: qt application
rule("qt.application")
add_deps("qt.quickapp")
diff --git a/xmake/templates/c++/quickapp_qt_static/project/xmake.lua b/xmake/templates/c++/quickapp_qt_static/project/xmake.lua
index 847cf6e76..f341f724f 100644
--- a/xmake/templates/c++/quickapp_qt_static/project/xmake.lua
+++ b/xmake/templates/c++/quickapp_qt_static/project/xmake.lua
@@ -9,7 +9,7 @@ includes("qt_add_static_plugins.lua")
target("[targetname]")
-- add rules
- add_rules("qt.quickapp")
+ add_rules("qt.quickapp_static")
-- add headers
add_headerfiles("src/*.h")
@@ -18,13 +18,6 @@ target("[targetname]")
add_files("src/*.cpp")
add_files("src/qml.qrc")
- -- add plugin: QXXXIntegrationPlugin
- if is_plat("macosx") then
- qt_add_static_plugins("QCocoaIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"qcocoa", "Qt5PrintSupport", "Qt5PlatformSupport", "Qt5Widgets", "cups"}})
- elseif is_plat("windows") then
- qt_add_static_plugins("QWindowsIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"Qt5PrintSupport", "Qt5PlatformSupport", "Qt5Widgets", "qwindows"}})
- end
-
-- add plugin: qml.QtQuick
qt_add_static_plugins("QtQuick2Plugin", {linkdirs = "qml/QtQuick.2", links = "qtquick2plugin"})
qt_add_static_plugins("QtQuick2WindowPlugin", {linkdirs = "qml/QtQuick/Window.2", links = "windowplugin"})
diff --git a/xmake/templates/c++/widgetapp_qt_static/project/xmake.lua b/xmake/templates/c++/widgetapp_qt_static/project/xmake.lua
index b2dd629d5..3c8e46c85 100644
--- a/xmake/templates/c++/widgetapp_qt_static/project/xmake.lua
+++ b/xmake/templates/c++/widgetapp_qt_static/project/xmake.lua
@@ -9,7 +9,7 @@ includes("qt_add_static_plugins.lua")
target("[targetname]")
-- add rules
- add_rules("qt.widgetapp")
+ add_rules("qt.widgetapp_static")
-- add headers
add_headerfiles("src/*.h")
@@ -21,12 +21,5 @@ target("[targetname]")
-- add files with Q_OBJECT meta (only for qt.moc)
add_files("src/mainwindow.h")
- -- add plugin: QXXXIntegrationPlugin
- if is_plat("macosx") then
- qt_add_static_plugins("QCocoaIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"qcocoa", "Qt5PrintSupport", "Qt5PlatformSupport", "cups"}})
- elseif is_plat("windows") then
- qt_add_static_plugins("QWindowsIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"Qt5PrintSupport", "Qt5PlatformSupport", "qwindows"}})
- end
-
-- add plugin: QSvgPlugin (optional)
qt_add_static_plugins("QSvgPlugin", {linkdirs = "plugins/imageformats", links = {"qsvg", "Qt5Svg"}})