From c2f5ce3f891e84489f01e7693ffbeb034b7a2de8 Mon Sep 17 00:00:00 2001 From: Olivier CHURLAUD Date: Wed, 7 Dec 2016 18:38:46 +0100 Subject: [PATCH 1/2] Add CMake support. Build with CMake needs Extra-CMake-Module --- CMakeLists.txt | 58 ++++++++++++++++++++++++++++++++ QWebDavConfig.cmake.in | 8 +++++ qwebdavlib/CMakeLists.txt | 49 +++++++++++++++++++++++++++ qwebdavlibExample/CMakeLists.txt | 40 ++++++++++++++++++++++ 4 files changed, 155 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 QWebDavConfig.cmake.in create mode 100644 qwebdavlib/CMakeLists.txt create mode 100644 qwebdavlibExample/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..e58b77e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,58 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(QWebDav) + +set(VERSION 1.0) + +include(FeatureSummary) +find_package(ECM 5.28.0 NO_MODULE) +set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") +feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) + +set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) + +include(KDEInstallDirs) +include(KDECMakeSettings) + +include(GenerateExportHeader) + +set(REQUIRED_QT_VERSION 5.5.0) +find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED COMPONENTS Core Network Xml) + +include(ECMSetupVersion) +include(ECMGenerateHeaders) + +ecm_setup_version(${VERSION} + VARIABLE_PREFIX QWEBDAV + VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/qwebdav_version.h" + PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/QWebDavConfigVersion.cmake" + SOVERSION 1) + +add_subdirectory(qwebdavlib) + +# create a Config.cmake and a ConfigVersion.cmake file and install them +set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/QWebDav") + +include(ECMPackageConfigHelpers) + +ecm_configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/QWebDavConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/QWebDavConfig.cmake" + INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} +) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qwebdav_version.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + COMPONENT Devel) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/QWebDavConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/QWebDavConfigVersion.cmake" + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + COMPONENT Devel) + +install(EXPORT QWebDavTargets + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + FILE QWebDavTargets.cmake) + +feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/QWebDavConfig.cmake.in b/QWebDavConfig.cmake.in new file mode 100644 index 0000000..32c0d02 --- /dev/null +++ b/QWebDavConfig.cmake.in @@ -0,0 +1,8 @@ +@PACKAGE_INIT@ + +find_dependency(Qt5Core @REQUIRED_QT_VERSION@) +find_dependency(Qt5Xml @REQUIRED_QT_VERSION@) +find_dependency(Qt5Network @REQUIRED_QT_VERSION@) + +include("${CMAKE_CURRENT_LIST_DIR}/QWebDavTargets.cmake") + diff --git a/qwebdavlib/CMakeLists.txt b/qwebdavlib/CMakeLists.txt new file mode 100644 index 0000000..36c6dd9 --- /dev/null +++ b/qwebdavlib/CMakeLists.txt @@ -0,0 +1,49 @@ + +set(qwebdav_SRCS + qnaturalsort.cpp + qwebdav.cpp + qwebdavdirparser.cpp + qwebdavitem.cpp +) + +add_library(QWebDav ${qwebdav_SRCS}) +generate_export_header(QWebDav) + +target_compile_definitions(QWebDav PRIVATE QWEBDAV_LIBRARY=1) +target_include_directories(QWebDav + INTERFACE "$") + +target_link_libraries(QWebDav + PUBLIC + Qt5::Core + Qt5::Network + Qt5::Xml +) + +set_target_properties(QWebDav PROPERTIES + VERSION ${QWEBDAV_VERSION_STRING} + SOVERSION ${QWEBDAV_SOVERSION} + EXPORT_NAME "QWebDav" +) + +ecm_generate_headers(QWebDav_HEADERS + HEADER_NAMES + QWebDav + QWebDavItem + QWebDavDirParser + QNaturalSort + QWebDav_global + + REQUIRED_HEADERS QWebDav_HEADERS +) + +install(TARGETS QWebDav + EXPORT QWebDavTargets + ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) + +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/qwebdav_export.h + ${QWebDav_HEADERS} + DESTINATION ${KDE_INSTALL_INCLUDEDIR}/QWebDav + COMPONENT Devel +) diff --git a/qwebdavlibExample/CMakeLists.txt b/qwebdavlibExample/CMakeLists.txt new file mode 100644 index 0000000..0d1e9a8 --- /dev/null +++ b/qwebdavlibExample/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(QWebDavExample) + +set(VERSION 1.0) + +cmake_minimum_required(VERSION 2.8.12) + +project(QWebDav) + +set(VERSION 1.0) + +include(FeatureSummary) +find_package(ECM 5.28.0 NO_MODULE) +set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") + +set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) + +include(KDEInstallDirs) +include(KDECMakeSettings) + +set(REQUIRED_QT_VERSION 5.5.0) + +find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED COMPONENTS Core Xml) +find_package(QWebDav REQUIRED) + +add_executable(QWebDavExample + main.cpp + qexample.cpp +) + +target_link_libraries(QWebDavExample + QWebDav +) + +install(TARGETS QWebDavExample + ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} +) + +feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) From d9bf871a3132da062f61cb8c69575050f1571e66 Mon Sep 17 00:00:00 2001 From: Olivier CHURLAUD Date: Sat, 24 Dec 2016 16:35:09 +0100 Subject: [PATCH 2/2] change capitalization WebDav to Webdav in cmake files --- CMakeLists.txt | 18 +++++----- ...vConfig.cmake.in => QWebdavConfig.cmake.in | 2 +- qwebdavlib/CMakeLists.txt | 36 +++++++++---------- 3 files changed, 28 insertions(+), 28 deletions(-) rename QWebDavConfig.cmake.in => QWebdavConfig.cmake.in (73%) diff --git a/CMakeLists.txt b/CMakeLists.txt index e58b77e..2e3e764 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 2.8.12) -project(QWebDav) +project(QWebdav) set(VERSION 1.0) @@ -25,19 +25,19 @@ include(ECMGenerateHeaders) ecm_setup_version(${VERSION} VARIABLE_PREFIX QWEBDAV VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/qwebdav_version.h" - PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/QWebDavConfigVersion.cmake" + PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/QWebdavConfigVersion.cmake" SOVERSION 1) add_subdirectory(qwebdavlib) # create a Config.cmake and a ConfigVersion.cmake file and install them -set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/QWebDav") +set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/QWebdav") include(ECMPackageConfigHelpers) ecm_configure_package_config_file( - "${CMAKE_CURRENT_SOURCE_DIR}/QWebDavConfig.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/QWebDavConfig.cmake" + "${CMAKE_CURRENT_SOURCE_DIR}/QWebdavConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/QWebdavConfig.cmake" INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) @@ -46,13 +46,13 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qwebdav_version.h COMPONENT Devel) install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/QWebDavConfig.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/QWebDavConfigVersion.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/QWebdavConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/QWebdavConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel) -install(EXPORT QWebDavTargets +install(EXPORT QWebdavTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" - FILE QWebDavTargets.cmake) + FILE QWebdavTargets.cmake) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/QWebDavConfig.cmake.in b/QWebdavConfig.cmake.in similarity index 73% rename from QWebDavConfig.cmake.in rename to QWebdavConfig.cmake.in index 32c0d02..a3f8c67 100644 --- a/QWebDavConfig.cmake.in +++ b/QWebdavConfig.cmake.in @@ -4,5 +4,5 @@ find_dependency(Qt5Core @REQUIRED_QT_VERSION@) find_dependency(Qt5Xml @REQUIRED_QT_VERSION@) find_dependency(Qt5Network @REQUIRED_QT_VERSION@) -include("${CMAKE_CURRENT_LIST_DIR}/QWebDavTargets.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/QWebdavTargets.cmake") diff --git a/qwebdavlib/CMakeLists.txt b/qwebdavlib/CMakeLists.txt index 36c6dd9..7ad1f1b 100644 --- a/qwebdavlib/CMakeLists.txt +++ b/qwebdavlib/CMakeLists.txt @@ -6,44 +6,44 @@ set(qwebdav_SRCS qwebdavitem.cpp ) -add_library(QWebDav ${qwebdav_SRCS}) -generate_export_header(QWebDav) +add_library(QWebdav ${qwebdav_SRCS}) +generate_export_header(QWebdav) -target_compile_definitions(QWebDav PRIVATE QWEBDAV_LIBRARY=1) -target_include_directories(QWebDav - INTERFACE "$") +target_compile_definitions(QWebdav PRIVATE QWEBDAV_LIBRARY=1) +target_include_directories(QWebdav + INTERFACE "$") -target_link_libraries(QWebDav +target_link_libraries(QWebdav PUBLIC Qt5::Core Qt5::Network Qt5::Xml ) -set_target_properties(QWebDav PROPERTIES +set_target_properties(QWebdav PROPERTIES VERSION ${QWEBDAV_VERSION_STRING} SOVERSION ${QWEBDAV_SOVERSION} - EXPORT_NAME "QWebDav" + EXPORT_NAME "QWebdav" ) -ecm_generate_headers(QWebDav_HEADERS +ecm_generate_headers(QWebdav_HEADERS HEADER_NAMES - QWebDav - QWebDavItem - QWebDavDirParser + QWebdav + QWebdavItem + QWebdavDirParser QNaturalSort - QWebDav_global + QWebdav_global - REQUIRED_HEADERS QWebDav_HEADERS + REQUIRED_HEADERS QWebdav_HEADERS ) -install(TARGETS QWebDav - EXPORT QWebDavTargets +install(TARGETS QWebdav + EXPORT QWebdavTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/qwebdav_export.h - ${QWebDav_HEADERS} - DESTINATION ${KDE_INSTALL_INCLUDEDIR}/QWebDav + ${QWebdav_HEADERS} + DESTINATION ${KDE_INSTALL_INCLUDEDIR}/QWebdav COMPONENT Devel )