-cmake_minimum_required(VERSION 3.16)
+cmake_minimum_required(VERSION 3.14)
-project(qthomecontrol VERSION 0.1 LANGUAGES CXX)
+project(test VERSION 0.1 LANGUAGES CXX)
+set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_AUTORCC ON)
-find_package(Qt6 6.2 COMPONENTS Quick REQUIRED)
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
if (UNIX)
add_subdirectory ("paho.mqtt.c")
endif(UNIX)
-qt_add_executable(appqthomecontrol
- main.cpp
- mqttinterface.cpp
- mqttinterface.h
-)
+find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Quick)
+find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Quick)
-qt_add_qml_module(appqthomecontrol
- URI qthomecontrol
- VERSION 1.0
- QML_FILES main.qml
- SOURCES
- mqttinterface.h mqttinterface.cpp
+set(PROJECT_SOURCES
+ main.cpp
+ qml.qrc
+ mqttinterface.cpp
+ mqttinterface.h
)
+if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
+ qt_add_executable(appqthomecontrol
+ MANUAL_FINALIZATION
+ ${PROJECT_SOURCES}
+ )
+# Define target properties for Android with Qt 6 as:
+# set_property(TARGET test APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
+# ${CMAKE_CURRENT_SOURCE_DIR}/android)
+# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
+else()
+ if(ANDROID)
+ add_library(appqthomecontrol SHARED
+ ${PROJECT_SOURCES}
+ )
+# Define properties for Android with Qt 5 after find_package() calls as:
+# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
+ else()
+ add_executable(appqthomecontrol
+ ${PROJECT_SOURCES}
+ )
+ endif()
+endif()
+
+target_link_libraries(appqthomecontrol
+ PRIVATE Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Quick)
+
set_target_properties(appqthomecontrol PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
target_include_directories (appqthomecontrol PRIVATE paho.mqtt.c/src)
-target_link_libraries(appqthomecontrol
- PRIVATE Qt6::Quick)
-
if (WIN32)
target_link_libraries (appqthomecontrol PRIVATE ${CMAKE_SOURCE_DIR}/paho.mqtt.c/src/Release/paho-mqtt3a.lib ${CMAKE_SOURCE_DIR}/paho.mqtt.c/src/Release/paho-mqtt3c.lib)
endif (WIN32)
install(TARGETS appqthomecontrol
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+if(QT_VERSION_MAJOR EQUAL 6)
+ qt_import_qml_plugins(qthomecontrol)
+ qt_finalize_executable(qthomecontrol)
+endif()
#include <QGuiApplication>
#include <QQmlApplicationEngine>
+#include "mqttinterface.h"
int main(int argc, char *argv[])
{
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+ QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+#endif
QGuiApplication app(argc, argv);
+ qmlRegisterType<MQTTInterface>("QtHomeControl", 1, 0, "MQTTInterface");
+
QQmlApplicationEngine engine;
- const QUrl url(u"qrc:/qthomecontrol/main.qml"_qs);
+ const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)