summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-04-17 00:43:40 +0800
committerruki <[email protected]>2018-04-16 22:22:03 +0800
commit4d630e8c0844d946e422ad347aa7708eca412b38 (patch)
tree573c8cfb868f89f0b3748359282402121efa8b34
parent811bda9a12d7cecfaac97f2ab9943daa4e627396 (diff)
add quickapp
-rw-r--r--tests/projects/qt_console/xmake.lua2
-rw-r--r--tests/projects/qt_quickapp/src/main.cpp16
-rw-r--r--tests/projects/qt_quickapp/src/main.qml9
-rw-r--r--tests/projects/qt_quickapp/src/qml.qrc5
-rw-r--r--tests/projects/qt_quickapp/xmake.lua17
-rw-r--r--tests/projects/qt_shared_library/xmake.lua2
-rw-r--r--tests/projects/qt_static_library/xmake.lua2
-rw-r--r--xmake/modules/detect/sdks/find_qt.lua5
-rw-r--r--xmake/rules/qt/xmake.lua61
9 files changed, 104 insertions, 15 deletions
diff --git a/tests/projects/qt_console/xmake.lua b/tests/projects/qt_console/xmake.lua
index 4ff829575..0ab7a6b23 100644
--- a/tests/projects/qt_console/xmake.lua
+++ b/tests/projects/qt_console/xmake.lua
@@ -11,5 +11,3 @@ target("qt_console")
-- add files
add_files("src/*.cpp")
- -- add frameworks
- add_frameworks("QtCore")
diff --git a/tests/projects/qt_quickapp/src/main.cpp b/tests/projects/qt_quickapp/src/main.cpp
new file mode 100644
index 000000000..6333b85c4
--- /dev/null
+++ b/tests/projects/qt_quickapp/src/main.cpp
@@ -0,0 +1,16 @@
+#include <QGuiApplication>
+#include <QQmlApplicationEngine>
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+
+ QGuiApplication app(argc, argv);
+
+ QQmlApplicationEngine engine;
+ engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
+ if (engine.rootObjects().isEmpty())
+ return -1;
+
+ return app.exec();
+}
diff --git a/tests/projects/qt_quickapp/src/main.qml b/tests/projects/qt_quickapp/src/main.qml
new file mode 100644
index 000000000..188049dae
--- /dev/null
+++ b/tests/projects/qt_quickapp/src/main.qml
@@ -0,0 +1,9 @@
+import QtQuick 2.9
+import QtQuick.Window 2.2
+
+Window {
+ visible: true
+ width: 640
+ height: 480
+ title: qsTr("Hello World")
+}
diff --git a/tests/projects/qt_quickapp/src/qml.qrc b/tests/projects/qt_quickapp/src/qml.qrc
new file mode 100644
index 000000000..5f6483ac3
--- /dev/null
+++ b/tests/projects/qt_quickapp/src/qml.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ </qresource>
+</RCC>
diff --git a/tests/projects/qt_quickapp/xmake.lua b/tests/projects/qt_quickapp/xmake.lua
new file mode 100644
index 000000000..87a1d80f8
--- /dev/null
+++ b/tests/projects/qt_quickapp/xmake.lua
@@ -0,0 +1,17 @@
+
+-- add modes: debug and release
+add_rules("mode:debug", "mode:release")
+
+-- add target
+target("qt_demo")
+
+ -- add rules
+ add_rules("qt:quickapp")
+
+ -- add headers
+ add_headers("src/*.h")
+
+ -- add files
+ add_files("src/*.cpp")
+ add_files("src/qml.qrc")
+
diff --git a/tests/projects/qt_shared_library/xmake.lua b/tests/projects/qt_shared_library/xmake.lua
index 7fb713393..e3d3c0e61 100644
--- a/tests/projects/qt_shared_library/xmake.lua
+++ b/tests/projects/qt_shared_library/xmake.lua
@@ -18,4 +18,4 @@ target("qt_demo")
add_defines("QT_DEMO_LIBRARY")
-- add frameworks
- add_frameworks("QtGui", "QtCore")
+ add_frameworks("QtGui")
diff --git a/tests/projects/qt_static_library/xmake.lua b/tests/projects/qt_static_library/xmake.lua
index 42e208787..00fcd0b31 100644
--- a/tests/projects/qt_static_library/xmake.lua
+++ b/tests/projects/qt_static_library/xmake.lua
@@ -15,4 +15,4 @@ target("qt_demo")
add_files("src/*.cpp")
-- add frameworks
- add_frameworks("QtGui", "QtCore")
+ add_frameworks("QtGui")
diff --git a/xmake/modules/detect/sdks/find_qt.lua b/xmake/modules/detect/sdks/find_qt.lua
index 0ef499544..04f3041af 100644
--- a/xmake/modules/detect/sdks/find_qt.lua
+++ b/xmake/modules/detect/sdks/find_qt.lua
@@ -72,8 +72,11 @@ function _find_qt(sdkdir)
-- get includedirs
local includedirs = {path.join(sdkdir, "include")}
+ -- get version
+ local version = sdkdir:match("(%d+%.?%d*%.?%d*.-)")
+
-- get toolchains
- return {sdkdir = sdkdir, bindir = bindir, linkdirs = linkdirs, includedirs = includedirs}
+ return {sdkdir = sdkdir, bindir = bindir, linkdirs = linkdirs, includedirs = includedirs, version = version}
end
-- find qt sdk toolchains
diff --git a/xmake/rules/qt/xmake.lua b/xmake/rules/qt/xmake.lua
index 4c08cea78..e92ad2aa8 100644
--- a/xmake/rules/qt/xmake.lua
+++ b/xmake/rules/qt/xmake.lua
@@ -22,7 +22,7 @@
-- @file xmake.lua
--
--- define base rule
+-- define rule: base
rule("qt:base")
-- on load
@@ -56,6 +56,9 @@ rule("qt:base")
-- deprecated API in order to know how to port your code away from it.
target:add("defines", "QT_DEPRECATED_WARNINGS")
+ -- add frameworks: QtCore
+ target:add("frameworks", "QtCore")
+
-- do frameworks for qt
for _, framework in ipairs(target:get("frameworks")) do
@@ -81,15 +84,11 @@ rule("qt:base")
end
end)
--- define rule: qt console
-rule("qt:console")
-
- -- add base rule
- add_deps("qt:base")
-
- -- on load
- on_load(function (target)
- target:set("kind", "binary")
+-- define rule: *.qrc
+rule("qt:qrc")
+ set_extensions(".qrc")
+ on_build_file(function (target, sourcefile)
+ print(sourcefile)
end)
-- define rule: qt static library
@@ -114,3 +113,45 @@ rule("qt:shared")
target:set("kind", "shared")
end)
+-- define rule: qt console
+rule("qt:console")
+
+ -- add base rule
+ add_deps("qt:base")
+
+ -- on load
+ on_load(function (target)
+ target:set("kind", "binary")
+ end)
+
+-- define rule: qt widget application
+rule("qt:widgetapp")
+
+ -- add base rule
+ add_deps("qt:base")
+
+ -- on load
+ on_load(function (target)
+
+ -- set kind: binary
+ target:set("kind", "binary")
+ end)
+
+-- define rule: qt quick application
+rule("qt:quickapp")
+
+ -- add rules
+ add_deps("qt:qrc", "qt:base")
+
+ -- on load
+ on_load(function (target)
+
+ -- set kind: binary
+ target:set("kind", "binary")
+
+ -- add frameworks
+ target:add("frameworks", "QtQuick", "QtGui")
+
+ -- TODO
+ -- import("load")(target, {kind = "binary", frameworks = {"QtQuick", "QtGui", "QtCore"}})
+ end)