-cmake_minimum_required(VERSION 3.14)
+cmake_minimum_required(VERSION 3.16)
-project(test VERSION 0.1 LANGUAGES CXX)
+project(qthomecontrol VERSION 0.1 LANGUAGES CXX)
-set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTORCC ON)
-
-set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
+find_package(Qt6 6.2 COMPONENTS Quick REQUIRED)
+
if (UNIX)
add_subdirectory ("paho.mqtt.c")
endif(UNIX)
-find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core Quick)
-find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Quick)
-
-set(PROJECT_SOURCES
- main.cpp
- qml.qrc
- mqttinterface.cpp
- mqttinterface.h
+qt_add_executable(appqthomecontrol
+ main.cpp
+ 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)
+qt_add_qml_module(appqthomecontrol
+ URI qthomecontrol
+ VERSION 1.0
+ QML_FILES main.qml
+ SOURCES
+ mqttinterface.h mqttinterface.cpp
+)
set_target_properties(appqthomecontrol PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
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(QStringLiteral("qrc:/main.qml"));
+ const QUrl url(u"qrc:/qthomecontrol/main.qml"_qs);
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)