Код: Выделить всё
# CMakeLists.txt
cmake_minimum_required(VERSION 3.21.1)
option(LINK_INSIGHT "Link Qt Insight Tracker library" ON)
option(BUILD_QDS_COMPONENTS "Build design studio components" ON)
project(SzachyApp LANGUAGES CXX)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(QT_QML_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/qml)
set(QML_IMPORT_PATH ${QT_QML_OUTPUT_DIRECTORY}
CACHE STRING "Import paths for Qt Creator's code model"
FORCE
)
set(app_icon_resource_windows "D:/qt/proj/Szachy/resources.rc")
find_package(Qt6 6.8 REQUIRED COMPONENTS Core Gui Widgets Qml Quick QuickTimeline ShaderTools)
find_package(Qt6 REQUIRED COMPONENTS Core Widgets Quick)
find_package(Qt6 REQUIRED COMPONENTS Core)
qt_standard_project_setup()
qt_add_executable(${CMAKE_PROJECT_NAME} ${app_icon_resource_windows}
App/position.h App/position.cpp)
qt_add_resources(${CMAKE_PROJECT_NAME} "configuration"
target_link_libraries(SzachyApp PRIVATE Qt6::Core)
qt_add_qml_module(SzachyApp
URI art.sz
VERSION 1.0
SOURCES
App/gamemanager.h App/gamemanager.cpp
)
target_link_libraries(SzachyApp PRIVATE Qt6::Core Qt6::Widgets Qt6::Quick Qt6::Widgets)
PREFIX "/"
FILES
qtquickcontrols2.conf)
include(qds)
if (BUILD_QDS_COMPONENTS)
include(qmlcomponents OPTIONAL)
endif()
if (LINK_INSIGHT)
include(insight OPTIONAL)
endif ()
include(GNUInstallDirs)
install(TARGETS ${CMAKE_PROJECT_NAME}
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
Код: Выделить всё
// main.cpp
#include
#include
#include
#include "gamemanager.h"
#include "autogen/environment.h"
#include
int main(int argc, char *argv[])
{
set_qt_environment();
QApplication app(argc, argv);
app.setWindowIcon(QIcon("D:/qt/proj/Szachy/SzachyContent/icons/szachy.ico"));
QQmlApplicationEngine engine;
const QUrl url(mainQmlFile);
QObject::connect(
&engine, &QQmlApplicationEngine::objectCreated, &app,
[url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.addImportPath("qrc:/qt/qml/");
engine.addImportPath(QCoreApplication::applicationDirPath() + "/qml");
engine.addImportPath(":/");
engine.load(url);
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
Код: Выделить всё
// gamemanager.h - the backend class
#ifndef GAMEMANAGER_H
#define GAMEMANAGER_H
#include
#include
class GameManager : public QObject
{
Q_OBJECT
QML_ELEMENT
public:
explicit GameManager(QObject *parent = nullptr);
signals:
};
#endif // GAMEMANAGER_H
Подробнее здесь: https://stackoverflow.com/questions/798 ... -c-backend
Мобильная версия