diff --git a/CMakeLists.txt b/CMakeLists.txt index 0c3289be..87c0ab80 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,95 +1,122 @@ project(cantor) cmake_minimum_required (VERSION 3.1.0 FATAL_ERROR) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) # KDE Application Version, managed by release script set (KDE_APPLICATIONS_VERSION_MAJOR "19") set (KDE_APPLICATIONS_VERSION_MINOR "03") set (KDE_APPLICATIONS_VERSION_MICRO "70") set (KDE_APPLICATIONS_VERSION "${KDE_APPLICATIONS_VERSION_MAJOR}.${KDE_APPLICATIONS_VERSION_MINOR}.${KDE_APPLICATIONS_VERSION_MICRO}") set(KF5_MIN_VERSION "5.49.0") find_package(ECM 5.15.0 REQUIRED CONFIG) set(CMAKE_MODULE_PATH ${cantor_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) find_package(Qt5 5.6.0 CONFIG REQUIRED Core Widgets PrintSupport Svg Xml XmlPatterns Test) find_package(KF5 ${KF5_MIN_VERSION} REQUIRED Config Crash Completion DocTools NewStuff IconThemes TextEditor CoreAddons Archive Parts SyntaxHighlighting TextWidgets KIO XmlGui I18n) if(NOT WIN32) find_package(KF5 ${KF5_MIN_VERSION} REQUIRED Pty) endif() include(FeatureSummary) include(ECMInstallIcons) include(ECMSetupVersion) include(KDEInstallDirs) include(KDECompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) include(KDEFrameworkCompilerSettings) include(ECMAddAppIcon) include(GenerateExportHeader) if(NOT WIN32) set_package_properties(LibSpectre PROPERTIES DESCRIPTION "A PostScript rendering library" URL "http://libspectre.freedesktop.org/wiki/" TYPE OPTIONAL PURPOSE "Support for rendering EPS files in Cantor") find_package(LibSpectre) if(LIBSPECTRE_FOUND) set(WITH_EPS On) else(LIBSPECTRE_FOUND) set(WITH_EPS Off) endif(LIBSPECTRE_FOUND) else(NOT WIN32) set(WITH_EPS Off) endif(NOT WIN32) find_package(Discount 2.2.0) set_package_properties(Discount PROPERTIES DESCRIPTION "A C implementation of the Markdown markup language" URL "https://www.pell.portland.or.us/~orc/Code/discount/" TYPE OPTIONAL PURPOSE "Used for Markdown entries in Cantor") add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS) if (CMAKE_BUILD_TYPE STREQUAL "RELEASE") add_definitions(-DQT_NO_DEBUG_OUTPUT) endif (CMAKE_BUILD_TYPE STREQUAL "RELEASE") kde_enable_exceptions() add_subdirectory(doc) add_subdirectory(src) add_subdirectory(icons) +set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/Cantor") +configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/CantorConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/CantorConfig.cmake + INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}/ + #PATH_VARS INCLUDE_INSTALL_DIR SYSCONFIG_INSTALL_DIR +) + +ecm_setup_version(${KDE_APPLICATIONS_VERSION} + VARIABLE_PREFIX CANTOR + VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/cantor_version.h" + PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/CantorConfigVersion.cmake" +) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/CantorConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/CantorConfigVersion.cmake + DESTINATION ${CMAKECONFIG_INSTALL_DIR} + COMPONENT Devel +) + +install(EXPORT CantorTargets + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + FILE CantorTargets.cmake + NAMESPACE Cantor:: +) + + install(FILES org.kde.cantor.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/CantorConfig.cmake.in b/CantorConfig.cmake.in new file mode 100644 index 00000000..67e6f89d --- /dev/null +++ b/CantorConfig.cmake.in @@ -0,0 +1,3 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/CantorTargets.cmake") diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index d3cd6712..a9956219 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -1,89 +1,99 @@ set( cantor_LIB_SRCS session.cpp expression.cpp backend.cpp result.cpp textresult.cpp imageresult.cpp epsresult.cpp latexresult.cpp latexrenderer.cpp helpresult.cpp animationresult.cpp extension.cpp assistant.cpp completionobject.cpp syntaxhelpobject.cpp defaulthighlighter.cpp defaultvariablemodel.cpp panelplugin.cpp panelpluginhandler.cpp worksheetaccess.cpp directives/plotdirectives.cpp ) Set( cantor_LIB_HDRS cantor_macros.h #base classes backend.h session.h expression.h extension.h syntaxhelpobject.h completionobject.h #results animationresult.h epsresult.h helpresult.h imageresult.h latexresult.h result.h textresult.h #helper classes defaulthighlighter.h defaultvariablemodel.h worksheetaccess.h ) ki18n_wrap_ui(cantor_LIB_SRCS directives/axisrange.ui directives/plottitle.ui) kconfig_add_kcfg_files(cantor_LIB_SRCS settings.kcfgc) install(FILES cantor_libs.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR}) configure_file (config-cantorlib.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-cantorlib.h ) add_library( cantorlibs SHARED ${cantor_LIB_SRCS} ) generate_export_header(cantorlibs BASE_NAME cantor) kcoreaddons_desktop_to_json(cantorlibs cantor_assistant.desktop DEFAULT_SERVICE_TYPE) kcoreaddons_desktop_to_json(cantorlibs cantor_backend.desktop DEFAULT_SERVICE_TYPE) kcoreaddons_desktop_to_json(cantorlibs cantor_panelplugin.desktop DEFAULT_SERVICE_TYPE) target_link_libraries( cantorlibs KF5::Completion KF5::IconThemes KF5::KIOCore KF5::KIOFileWidgets KF5::KIOWidgets KF5::Archive KF5::ConfigCore KF5::ConfigGui KF5::I18n KF5::XmlGui ${QT5_LIBRARIES} Qt5::Xml ) -set_target_properties( cantorlibs PROPERTIES VERSION ${KDE_APPLICATIONS_VERSION} SOVERSION 20) +set (CANTORLIBS_SOVERSION 20) +set_target_properties( cantorlibs PROPERTIES VERSION ${KDE_APPLICATIONS_VERSION} SOVERSION ${CANTORLIBS_SOVERSION}) +ecm_setup_version(${KDE_APPLICATIONS_VERSION} + VARIABLE_PREFIX CANTOR + SOVERSION ${CANTORLIBS_SOVERSION} + VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/cantorlibs_version.h +) -install( TARGETS cantorlibs ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) +install( TARGETS cantorlibs EXPORT CantorTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} ) -install( FILES ${cantor_LIB_HDRS} ${CMAKE_CURRENT_BINARY_DIR}/cantor_export.h +install( + FILES + ${cantor_LIB_HDRS} + ${CMAKE_CURRENT_BINARY_DIR}/cantor_export.h + ${CMAKE_CURRENT_BINARY_DIR}/cantorlibs_version.h DESTINATION ${KDE_INSTALL_INCLUDEDIR}/cantor COMPONENT Devel ) if(BUILD_TESTING) add_subdirectory(test) endif()