# php-qml framework — Qt module (PhpQml.Bridge). # # Designed to be add_subdirectory()'d from the consuming application's # top-level CMakeLists.txt (see framework/skeleton/qml/CMakeLists.txt # arriving in Phase 1 sub-commit 6). Standalone configuration also # works for module-only sanity builds. cmake_minimum_required(VERSION 3.21) if(NOT DEFINED PROJECT_NAME) project(php_qml_bridge LANGUAGES CXX) endif() set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) if(NOT TARGET Qt6::Core) find_package(Qt6 6.5 REQUIRED COMPONENTS Core Gui Quick Qml Network) qt_standard_project_setup(REQUIRES 6.5) endif() qt_add_qml_module(php_qml_bridge URI PhpQml.Bridge VERSION 1.0 STATIC # OUTPUT_DIRECTORY must mirror the URI for qmllint to resolve the module. OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/PhpQml/Bridge SOURCES src/BackendConnection.h src/BackendConnection.cpp src/SingleInstance.h src/SingleInstance.cpp src/MercureClient.h src/MercureClient.cpp src/ReactiveListModel.h src/ReactiveListModel.cpp src/ReactiveObject.h src/ReactiveObject.cpp QML_FILES qml/RestClient.qml qml/AppShell.qml qml/DevConsole.qml ) target_include_directories(php_qml_bridge PUBLIC src/) target_link_libraries(php_qml_bridge PUBLIC Qt6::Core Qt6::Gui Qt6::Network Qt6::Qml Qt6::Quick ) # QML unit tests — opt-in. Only built when configuring with # -DBUILD_TESTING=ON or invoking ctest as part of a top-level project # that enable_testing()'d. Skipped by the skeleton + example app # release builds so production AppImages don't carry the test exe. if(BUILD_TESTING AND CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) enable_testing() add_subdirectory(tests) endif()