kate-gitplusplus/CMakeLists.txt

81 lines
2.3 KiB
CMake

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()