diff options
| author | ruki <[email protected]> | 2019-09-08 22:48:59 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-09-08 22:48:59 +0800 |
| commit | a930cd8e170ec0192d8e9a2fc21ea956a24f53f8 (patch) | |
| tree | b6beea6c8d4ee504a6b7a4c1ca490be7dd91e0b8 | |
| parent | 533b7ae2ee168d2be5f3df249712da0d9b141e40 (diff) | |
add qt.quickapp_static and qt.widgetapp_static
| -rw-r--r-- | tests/projects/qt/quickapp_static/xmake.lua | 9 | ||||
| -rw-r--r-- | tests/projects/qt/widgetapp_static/xmake.lua | 9 | ||||
| -rw-r--r-- | xmake/rules/qt/load.lua | 17 | ||||
| -rw-r--r-- | xmake/rules/qt/xmake.lua | 56 | ||||
| -rw-r--r-- | xmake/templates/c++/quickapp_qt_static/project/xmake.lua | 9 | ||||
| -rw-r--r-- | xmake/templates/c++/widgetapp_qt_static/project/xmake.lua | 9 |
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"}}) |
