From 56669bd4e5ed21cfd2b0f5b94983792396695e5e Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Sun, 17 Feb 2019 19:10:55 +0100 Subject: [PATCH] Use more GNUInstallDirs, fix pkgconfig libdir path, general cleanup --- CMakeLists.txt | 45 ++++++++++++----------------------- cmake/modules/FindQJSON.cmake | 2 +- dbusmenu-qt-config.cmake.in | 2 +- dbusmenu-qt.pc.in | 6 ++--- src/CMakeLists.txt | 16 ++++++------- tests/CMakeLists.txt | 10 ++++---- tools/testapp/CMakeLists.txt | 2 +- 7 files changed, 34 insertions(+), 49 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 72cbc45..2d757ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.8.11) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules") # Build options -option(WITH_DOC "Build documentation (requires Doxygen)" ON) +option(WITH_DOC "Build documentation (requires Doxygen)" OFF) # Versions ## Package version @@ -24,28 +24,8 @@ set(dbusmenu_qt_lib_PATCH_VERSION 0) set(dbusmenu_qt_lib_VERSION ${dbusmenu_qt_lib_SOVERSION}.${dbusmenu_qt_lib_API_VERSION}.${dbusmenu_qt_lib_PATCH_VERSION}) -# Check if we want to explicitly select the Qt version to be used or autodetect -if (NOT USE_QT4 AND NOT USE_QT5) - # Autodetect, prefering Qt5 - message(STATUS "Autodetecting Qt version to use") - find_package(Qt5Widgets QUIET) - if (Qt5Widgets_FOUND) - set(USE_QT5 TRUE) - endif() -endif() - # Detect for which Qt version we're building -if (USE_QT5) - find_package(Qt5Widgets REQUIRED) - find_package(Qt5DBus REQUIRED) - include_directories(${Qt5Widgets_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS}) - find_package(Qt5Core REQUIRED) - set(CMAKE_AUTOMOC ON) - set(CMAKE_AUTOMOC_RELAXED_MODE ON) - set(CMAKE_POSITION_INDEPENDENT_CODE ON) - - set(QT_SUFFIX "qt5") -else() +if (USE_QT4) find_package(Qt4 REQUIRED) include_directories( ${QT_INCLUDE_DIR} @@ -55,6 +35,14 @@ else() ) set(QT_SUFFIX "qt") +else() + find_package(Qt5 CONFIG REQUIRED Core DBus Widgets) + include_directories(${Qt5Widgets_INCLUDE_DIRS} ${Qt5DBus_INCLUDE_DIRS}) + set(CMAKE_AUTOMOC ON) + set(CMAKE_AUTOMOC_RELAXED_MODE ON) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) + + set(QT_SUFFIX "qt5") endif() include (CheckCXXCompilerFlag) @@ -76,9 +64,7 @@ endif (__DBUSMENU_HAVE_CXX11) include(CMakePackageConfigHelpers) include(GNUInstallDirs) -set(LIB_DESTINATION "${CMAKE_INSTALL_LIBDIR}") -set(CMAKECONFIG_INSTALL_DIR "${LIB_DESTINATION}/cmake/dbusmenu-${QT_SUFFIX}") -set(INCLUDE_INSTALL_DIR "include/dbusmenu-${QT_SUFFIX}") +set(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}/dbusmenu-${QT_SUFFIX}") # dist targets set(ARCHIVE_NAME libdbusmenu-${QT_SUFFIX}-${dbusmenu_qt_VERSION}) @@ -103,7 +89,7 @@ add_dependencies(distcheck dist) configure_file(dbusmenu-qt.pc.in ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}.pc @ONLY) install(FILES ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}.pc - DESTINATION ${LIB_DESTINATION}/pkgconfig + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig ) add_subdirectory(src) @@ -118,7 +104,7 @@ if(WITH_DOC) ) install(DIRECTORY ${CMAKE_BINARY_DIR}/html/ - DESTINATION share/doc/libdbusmenu-${QT_SUFFIX}-doc + DESTINATION ${CMAKE_INSTALL_DOCDIR} ) endif(WITH_DOC) @@ -126,8 +112,8 @@ endif(WITH_DOC) configure_package_config_file( dbusmenu-qt-config.cmake.in ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config.cmake - INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/dbusmenu-${QT_SUFFIX} PATH_VARS INCLUDE_INSTALL_DIR ) write_basic_package_version_file( @@ -140,6 +126,6 @@ write_basic_package_version_file( install(FILES ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config.cmake ${CMAKE_BINARY_DIR}/dbusmenu-${QT_SUFFIX}-config-version.cmake - DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/dbusmenu-${QT_SUFFIX}" COMPONENT Devel ) --- a/cmake/modules/FindQJSON.cmake +++ b/cmake/modules/FindQJSON.cmake @@ -34,7 +34,7 @@ else (QJSON_INCLUDE_DIR AND QJSON_LIBRARIES) qjson/parser.h PATHS ${PC_QJSON_INCLUDE_DIRS} - ${INCLUDE_INSTALL_DIR} + ${CMAKE_INSTALL_INCLUDEDIR} ${KDE4_INCLUDE_DIR} ) --- a/dbusmenu-qt.pc.in +++ b/dbusmenu-qt.pc.in @@ -1,7 +1,7 @@ prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@CMAKE_INSTALL_PREFIX@/lib -includedir=@CMAKE_INSTALL_PREFIX@/include/dbusmenu-@QT_SUFFIX@ +exec_prefix=${prefix} +libdir=@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@ +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@/dbusmenu-@QT_SUFFIX@ Name: libdbusmenu-@QT_SUFFIX@ Description: Qt implementation of dbusmenu spec --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -29,7 +29,7 @@ endif (__DBUSMENU_HAVE_CXX11) # Check whether QIcon::name() exists. It was added in late Qt 4.7 cycle, and is # not present in betas. -if (NOT USE_QT5) +if (USE_QT4) set(CMAKE_REQUIRED_INCLUDES "${QT_INCLUDE_DIR}") set(CMAKE_REQUIRED_LIBRARIES "${QT_QTGUI_LIBRARIES};${QT_QTCORE_LIBRARIES}") else() @@ -64,7 +64,7 @@ include_directories( ${CMAKE_BINARY_DIR}/src ) -if (NOT USE_QT5) +if (USE_QT4) qt4_automoc(${dbusmenu_qt_SRCS}) qt4_add_dbus_adaptor(dbusmenu_qt_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/com.canonical.dbusmenu.xml @@ -88,7 +88,7 @@ set_target_properties(dbusmenu-${QT_SUFFIX} PROPERTIES ) -if (NOT USE_QT5) +if (USE_QT4) target_link_libraries(dbusmenu-${QT_SUFFIX} ${QT_QTGUI_LIBRARIES} ${QT_QTDBUS_LIBRARIES} @@ -105,23 +105,23 @@ endif() # Make sure linking to the target adds dbusmenu-qt install directory target_include_directories(dbusmenu-${QT_SUFFIX} - INTERFACE "$") + INTERFACE "$") install(TARGETS dbusmenu-${QT_SUFFIX} EXPORT dbusmenu-${QT_SUFFIX}-targets - LIBRARY DESTINATION ${LIB_DESTINATION} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION bin ) install(EXPORT dbusmenu-${QT_SUFFIX}-targets - DESTINATION ${CMAKECONFIG_INSTALL_DIR}) + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/dbusmenu-${QT_SUFFIX}) install(DIRECTORY . - DESTINATION ${INCLUDE_INSTALL_DIR} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dbusmenu-${QT_SUFFIX} FILES_MATCHING PATTERN "*.h" PATTERN "*_p.h" EXCLUDE ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/dbusmenu_version.h - DESTINATION ${INCLUDE_INSTALL_DIR} + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dbusmenu-${QT_SUFFIX} ) --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,9 +1,9 @@ -if (NOT USE_QT5) +if (USE_QT4) qt4_automoc(slowmenu.cpp) endif() add_executable(slowmenu slowmenu.cpp) -if (NOT USE_QT5) +if (USE_QT4) target_link_libraries(slowmenu ${QT_QTGUI_LIBRARIES} ${QT_QTDBUS_LIBRARIES} @@ -77,7 +77,7 @@ set(dbusmenuexportertest_SRCS testutils.cpp ) -if (NOT USE_QT5) +if (USE_QT4) qt4_automoc(${dbusmenuexportertest_SRCS}) endif() @@ -94,7 +94,7 @@ set(dbusmenuimportertest_SRCS testutils.cpp ) -if (NOT USE_QT5) +if (USE_QT4) qt4_automoc(${dbusmenuimportertest_SRCS}) endif() @@ -110,7 +110,7 @@ set(dbusmenushortcuttest_SRCS dbusmenushortcuttest.cpp ) -if (NOT USE_QT5) +if (USE_QT4) qt4_automoc(${dbusmenushortcuttest_SRCS}) endif() --- a/tools/testapp/CMakeLists.txt +++ b/tools/testapp/CMakeLists.txt @@ -4,7 +4,7 @@ set(qtapp_SRCS add_executable(dbusmenubench-qtapp ${qtapp_SRCS}) -if (NOT USE_QT5) +if (USE_QT4) # Qt4 include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../../src -- 2.20.1