cmake_minimum_required(VERSION 3.16) project(gitplusplus VERSION 0.1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) find_package(ECM 5.80 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) # --- Detect Qt6/KF6 or fall back to Qt5/KF5 --- find_package(KF6TextEditor QUIET CONFIG) if(KF6TextEditor_FOUND) set(QT_MAJOR_VERSION 6) else() set(QT_MAJOR_VERSION 5) endif() include(KDEInstallDirs) include(KDECMakeSettings) include(KDECompilerSettings NO_POLICY_SCOPE) if(QT_MAJOR_VERSION EQUAL 6) find_package(Qt6 REQUIRED COMPONENTS Core Widgets) find_package(KF6I18n REQUIRED) find_package(KF6CoreAddons REQUIRED) set(KF_LINK_LIBS KF6::TextEditor KF6::I18n Qt6::Core Qt6::Widgets ) set(PLUGIN_INSTALL_NS "kf6/ktexteditor") message(STATUS "Building Git++ with KF6/Qt6") else() find_package(Qt5 REQUIRED COMPONENTS Core Widgets) find_package(KF5TextEditor REQUIRED) find_package(KF5I18n REQUIRED) find_package(KF5CoreAddons REQUIRED) set(KF_LINK_LIBS KF5::TextEditor KF5::I18n Qt5::Core Qt5::Widgets ) set(PLUGIN_INSTALL_NS "ktexteditor") message(STATUS "Building Git++ with KF5/Qt5") endif() # --- Find libkateprivate for diff widget support --- # The library may only exist as a versioned .so (no dev symlink) file(GLOB _KATEPRIVATE_CANDIDATES "/usr/lib64/libkateprivate.so*" "/usr/lib/libkateprivate.so*" "/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}/libkateprivate.so*" "/usr/lib/*/libkateprivate.so*" ) if(_KATEPRIVATE_CANDIDATES) list(GET _KATEPRIVATE_CANDIDATES 0 KATEPRIVATE_LIB) message(STATUS "Found libkateprivate: ${KATEPRIVATE_LIB}") add_definitions(-DHAVE_KATE_DIFF) else() set(KATEPRIVATE_LIB "") message(STATUS "libkateprivate not found — diff will open as plain text") endif() kcoreaddons_add_plugin(gitplusplus SOURCES gitplusplus.cpp gitstatusmodel.cpp INSTALL_NAMESPACE "${PLUGIN_INSTALL_NS}" ) target_link_libraries(gitplusplus ${KF_LINK_LIBS}) target_include_directories(gitplusplus PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) if(KATEPRIVATE_LIB) target_include_directories(gitplusplus PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/kate-compat) target_link_libraries(gitplusplus ${KATEPRIVATE_LIB}) endif()