summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2019-02-24 00:41:38 +0800
committerruki <[email protected]>2019-02-24 00:41:38 +0800
commit30ce2cbcfd8d70e5d9c8c28121c376a6c1e35d01 (patch)
tree1e3353cd2f087cacd8e4550ef6e0c06e7a583af7
parent28a830e6baec04094a2f4933421a216c87025272 (diff)
add qt_add_static_plugins
-rw-r--r--tests/projects/qt/quickapp_static/src/main.cpp1
-rw-r--r--tests/projects/qt/quickapp_static/w32
-rw-r--r--tests/projects/qt/quickapp_static/xmake.lua15
-rw-r--r--tests/projects/qt/widgetapp_static/xmake.lua20
-rw-r--r--xmake/includes/qt_add_static_plugins.lua47
5 files changed, 94 insertions, 21 deletions
diff --git a/tests/projects/qt/quickapp_static/src/main.cpp b/tests/projects/qt/quickapp_static/src/main.cpp
index 05e41f5e1..e72853f44 100644
--- a/tests/projects/qt/quickapp_static/src/main.cpp
+++ b/tests/projects/qt/quickapp_static/src/main.cpp
@@ -12,7 +12,6 @@ int main(int argc, char *argv[])
QQmlApplicationEngine engine;
Q_IMPORT_PLUGIN(QtQuick2Plugin)
-// Q_IMPORT_PLUGIN(QtQuick2WindowPlugin)
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2Plugin().instance())->registerTypes("QtQuick");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2Plugin().instance()) ->initializeEngine( &engine, "QtQuick");
diff --git a/tests/projects/qt/quickapp_static/w b/tests/projects/qt/quickapp_static/w
new file mode 100644
index 000000000..49412dd35
--- /dev/null
+++ b/tests/projects/qt/quickapp_static/w
@@ -0,0 +1,32 @@
+
+-- add modes: debug and release
+add_rules("mode.debug", "mode.release")
+
+-- add target
+target("qt_demo")
+
+ -- add rules
+ add_rules("qt.application")
+
+ -- add headers
+ add_headerfiles("src/*.h")
+
+ -- add files
+ add_files("src/*.cpp")
+ add_files("src/qml.qrc")
+
+ -- add frameworks
+ add_frameworks("QtQuick")
+
+ -- 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", "cups"}})
+ end
+
+ -- add plugin: qml.QtQuick
+ add_values("qt.linkdirs", "qml/QtQuick.2")
+ add_values("qt.links", "qtquick2plugin")
+ add_values("qt.plugins", "QtQuick2Plugin")
+
diff --git a/tests/projects/qt/quickapp_static/xmake.lua b/tests/projects/qt/quickapp_static/xmake.lua
index 03232c822..55662632e 100644
--- a/tests/projects/qt/quickapp_static/xmake.lua
+++ b/tests/projects/qt/quickapp_static/xmake.lua
@@ -2,6 +2,9 @@
-- add modes: debug and release
add_rules("mode.debug", "mode.release")
+-- includes
+includes("qt_add_static_plugins.lua")
+
-- add target
target("qt_demo")
@@ -18,17 +21,13 @@ target("qt_demo")
-- add frameworks
add_frameworks("QtQuick")
- -- add plugin: platforms
- add_values("qt.linkdirs", "plugins/platforms")
+ -- add plugin: QXXXIntegrationPlugin
if is_plat("macosx") then
- add_values("qt.links", "qcocoa", "Qt5PrintSupport", "Qt5PlatformSupport", "Qt5Widgets", "cups")
- add_values("qt.plugins", "QCocoaIntegrationPlugin")
+ qt_add_static_plugins("QCocoaIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"qcocoa", "Qt5PrintSupport", "Qt5PlatformSupport", "Qt5Widgets", "cups"}})
elseif is_plat("windows") then
- add_values("qt.links", "Qt5PrintSupport", "Qt5PlatformSupport", "cups")
- add_values("qt.plugins", "QWindowsIntegrationPlugin")
+ qt_add_static_plugins("QWindowsIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"Qt5PrintSupport", "Qt5PlatformSupport", "Qt5Widgets", "cups"}})
end
-- add plugin: qml.QtQuick
- add_values("qt.linkdirs", "qml/QtQuick.2")
- add_values("qt.links", "qtquick2plugin")
+ qt_add_static_plugins("QtQuick2Plugin", {linkdirs = "qml/QtQuick.2", links = "qtquick2plugin"})
diff --git a/tests/projects/qt/widgetapp_static/xmake.lua b/tests/projects/qt/widgetapp_static/xmake.lua
index b6142ef03..8adc77d11 100644
--- a/tests/projects/qt/widgetapp_static/xmake.lua
+++ b/tests/projects/qt/widgetapp_static/xmake.lua
@@ -2,6 +2,9 @@
-- add modes: debug and release
add_rules("mode.debug", "mode.release")
+-- includes
+includes("qt_add_static_plugins.lua")
+
-- add target
target("qt_demo")
@@ -21,19 +24,12 @@ target("qt_demo")
-- add frameworks
add_frameworks("QtWidgets")
- -- add plugin: platforms
- add_values("qt.linkdirs", "plugins/platforms")
+ -- add plugin: QXXXIntegrationPlugin
if is_plat("macosx") then
- add_values("qt.links", "qcocoa", "Qt5PrintSupport", "Qt5PlatformSupport", "cups")
- add_values("qt.plugins", "QCocoaIntegrationPlugin")
+ qt_add_static_plugins("QCocoaIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"qcocoa", "Qt5PrintSupport", "Qt5PlatformSupport", "cups"}})
elseif is_plat("windows") then
- add_values("qt.links", "Qt5PrintSupport", "Qt5PlatformSupport", "cups")
- add_values("qt.plugins", "QWindowsIntegrationPlugin")
+ qt_add_static_plugins("QWindowsIntegrationPlugin", {linkdirs = "plugins/platforms", links = {"Qt5PrintSupport", "Qt5PlatformSupport", "cups"}})
end
- -- add plugin: imageformats.QSvgPlugin (optional)
- --[[
- add_values("qt.linkdirs", "plugins/imageformats")
- add_values("qt.links", "qsvg", "Qt5Svg")
- add_values("qt.plugins", "QSvgPlugin")
- ]]
+ -- add plugin: QSvgPlugin (optional)
+ qt_add_static_plugins("QSvgPlugin", {linkdirs = "plugins/imageformats", links = {"qsvg", "Qt5Svg"}})
diff --git a/xmake/includes/qt_add_static_plugins.lua b/xmake/includes/qt_add_static_plugins.lua
new file mode 100644
index 000000000..807823c03
--- /dev/null
+++ b/xmake/includes/qt_add_static_plugins.lua
@@ -0,0 +1,47 @@
+--!A cross-platform build utility based on Lua
+--
+-- Licensed to the Apache Software Foundation (ASF) under one
+-- or more contributor license agreements. See the NOTICE file
+-- distributed with this work for additional information
+-- regarding copyright ownership. The ASF licenses this file
+-- to you 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 - 2019, TBOOX Open Source Group.
+--
+-- @author ruki
+-- @file qt_add_static_plugins.lua
+--
+
+-- add static plugins for qt rules
+--
+-- e.g.
+--
+-- @code
+-- includes("qt_add_static_plugins.lua")
+-- target("test")
+-- add_rules("qt.application")
+-- add_files("src/*.c")
+-- qt_add_static_plugins("QSvgPlugin", {linkdirs = "plugins/imageformats", links = {"qsvg", "Qt5Svg"}})
+-- @endcode
+--
+function qt_add_static_plugins(plugin, opt)
+ opt = opt or {}
+ add_values("qt.plugins", plugin)
+ if opt.links then
+ add_values("qt.links", unpack(table.wrap(opt.links)))
+ end
+ if opt.linkdirs then
+ add_values("qt.linkdirs", unpack(table.wrap(opt.linkdirs)))
+ end
+end
+