84 lines
3.1 KiB
CMake
84 lines
3.1 KiB
CMake
# GammaRay MCP Bridge
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
#
|
|
# Links GammaRay client libs (GPL-2.0-or-later) => this bridge must be
|
|
# GPL-compatible. qtmcp is consumed under its GPL-2.0-only option (compatible).
|
|
|
|
cmake_minimum_required(VERSION 3.16)
|
|
project(GammaRayMcpBridge LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20) # qtmcp requires C++20
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_AUTOMOC ON)
|
|
|
|
# --- qtmcp via FetchContent FIRST ---
|
|
# qtmcp's find_package(Qt6) (inside the subdirectory) creates 3rd-party targets
|
|
# like Threads::Threads and promotes them to global THERE. If a prior top-level
|
|
# find_package(Qt6)/find_package(GammaRay) already created Threads::Threads at top
|
|
# scope, the subdirectory promotion fails ("not built in this directory"). So
|
|
# FetchContent runs before any Qt6/GammaRay find at this level.
|
|
include(FetchContent)
|
|
FetchContent_Declare(
|
|
qtmcp
|
|
GIT_REPOSITORY https://github.com/signal-slot/qtmcp.git
|
|
GIT_TAG 2706345c44e282aba15cf020608af2283e9fb5f9
|
|
GIT_SHALLOW TRUE
|
|
GIT_REMOTE_UPDATE_STRATEGY CHECKOUT
|
|
)
|
|
# Qt-prefixed vars (NOT BUILD_EXAMPLES) — verified to suppress example/test build.
|
|
set(QT_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
|
set(QT_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
|
FetchContent_MakeAvailable(qtmcp)
|
|
|
|
# --- GammaRay (built & installed in ../install-prefix by Step 1) ---
|
|
# Pass -DCMAKE_PREFIX_PATH=$(pwd)/../install-prefix at configure.
|
|
find_package(GammaRay REQUIRED)
|
|
|
|
# --- Qt6 components for the bridge target (Qt6 already found globally by qtmcp) ---
|
|
find_package(Qt6 COMPONENTS Core Gui Widgets Network REQUIRED)
|
|
|
|
add_executable(gammaray-mcp-bridge
|
|
src/main.cpp
|
|
src/gammaray_session.cpp
|
|
src/gammaray_session.h
|
|
src/scenegraph_tools.cpp
|
|
src/scenegraph_tools.h
|
|
src/material_interface.cpp
|
|
src/material_interface.h
|
|
src/quickinspector_proxy.cpp
|
|
src/quickinspector_proxy.h
|
|
src/quickinspector_types.h
|
|
src/property_reader.cpp
|
|
src/property_reader.h
|
|
src/widget_tools.cpp
|
|
src/widget_tools.h
|
|
src/widget_inspector_proxy.cpp
|
|
src/widget_inspector_proxy.h
|
|
)
|
|
|
|
target_link_libraries(gammaray-mcp-bridge PRIVATE
|
|
gammaray_client # VERIFIED: no GammaRay:: namespace
|
|
gammaray_common
|
|
Qt6::Core
|
|
Qt6::Gui
|
|
Qt6::Widgets # REQUIRED: QApplication for RemoteModel::style()
|
|
Qt6::Network
|
|
Qt6::McpServer # qtmcp, provides Qt::McpServer alias
|
|
Qt6::McpCommon
|
|
)
|
|
|
|
# Add GammaRay source common/ for message.h (not in installed headers)
|
|
target_include_directories(gammaray-mcp-bridge PRIVATE
|
|
/home/blumia/Sources/GammaRay/common
|
|
)
|
|
|
|
# Runtime: qtmcp builds SHARED libs + the stdio backend plugin into the build
|
|
# tree. Set RPATH so the bridge finds libQt6Mcp*.so, and set QT_PLUGIN_PATH at
|
|
# run time (see run.sh) so Qt loads mcpserverbackend/libqmcpserverstdio.so.
|
|
# Also add GammaRay's install lib dir for libgammaray_*.so.
|
|
set(_GR_LIBDIR "$<TARGET_PROPERTY:gammaray_client,IMPORTED_LOCATION>")
|
|
set_target_properties(gammaray-mcp-bridge PROPERTIES
|
|
BUILD_RPATH "$<TARGET_FILE_DIR:Qt6::McpServer>;${CMAKE_SOURCE_DIR}/../install-prefix/lib"
|
|
INSTALL_RPATH "$ORIGIN/../lib"
|
|
)
|