From c97dfbfd4c4571a8198f47b49b75306ac75c0944 Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 1 Feb 2020 00:01:21 +0100 Subject: [PATCH] Use GNUInstallDirs See https://github.com/Martchus/cpp-utilities/issues/17 --- cmake/modules/AppTarget.cmake | 14 +++++++------- cmake/modules/BasicConfig.cmake | 12 +++++++++--- cmake/modules/LibraryTarget.cmake | 13 ++++++++----- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/cmake/modules/AppTarget.cmake b/cmake/modules/AppTarget.cmake index ac2fd1f..2a52430 100644 --- a/cmake/modules/AppTarget.cmake +++ b/cmake/modules/AppTarget.cmake @@ -97,18 +97,18 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS) # add install target for binary if (APPLE) set(BUNDLE_INSTALL_DESTINATION - bin + "${CMAKE_INSTALL_BINDIR}" CACHE STRING "specifies the install destination for bundles") install( TARGETS ${META_TARGET_NAME} - RUNTIME DESTINATION bin + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" BUNDLE DESTINATION "${BUNDLE_INSTALL_DESTINATION}" COMPONENT binary) elseif (ANDROID) install( TARGETS ${META_TARGET_NAME} - RUNTIME DESTINATION bin COMPONENT binary - LIBRARY DESTINATION lib${SELECTED_LIB_SUFFIX} COMPONENT binary - ARCHIVE DESTINATION lib${SELECTED_LIB_SUFFIX} COMPONENT binary) + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT binary + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${SELECTED_LIB_SUFFIX}" COMPONENT binary + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${SELECTED_LIB_SUFFIX}" COMPONENT binary) else () install(TARGETS ${META_TARGET_NAME} RUNTIME DESTINATION bin COMPONENT binary) endif () @@ -228,7 +228,7 @@ function (add_custom_desktop_file) # add install for the desktop file install( FILES "${CMAKE_CURRENT_BINARY_DIR}/resources/${ARGS_FILE_NAME}.desktop" - DESTINATION "share/applications" + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications" COMPONENT desktop) endfunction () @@ -278,7 +278,7 @@ function (add_desktop_file) # add install for the appstream file install( FILES "${CMAKE_CURRENT_BINARY_DIR}/resources/${META_ID}.appdata.xml" - DESTINATION "share/metainfo" + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo" COMPONENT appimage) endfunction () diff --git a/cmake/modules/BasicConfig.cmake b/cmake/modules/BasicConfig.cmake index bc99dfa..bf4cc41 100644 --- a/cmake/modules/BasicConfig.cmake +++ b/cmake/modules/BasicConfig.cmake @@ -69,9 +69,15 @@ elseif (CONFIGURATION_TARGET_SUFFIX) set(TARGET_SUFFIX "-${CONFIGURATION_TARGET_SUFFIX}") endif () +# find standard installation directories +# note: Allow overriding CMAKE_INSTALL_LIBDIR but don't use the default from GNUInstallDirs (as an Arch Linux user this +# feels odd and I also want to avoid breaking existing build scripts). +set(CMAKE_INSTALL_LIBDIR "lib" CACHE STRING "sets the directory to install libraries to (within the prefix)") +include(GNUInstallDirs) + # define a few variables set(META_TARGET_NAME "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}") -set(META_DATA_DIR "share/${META_PROJECT_NAME}${META_CONFIG_SUFFIX}") +set(META_DATA_DIR "${CMAKE_INSTALL_DATAROOTDIR}/${META_PROJECT_NAME}${META_CONFIG_SUFFIX}") string(TOUPPER "${CMAKE_BUILD_TYPE}" META_CURRENT_CONFIGURATION) # set META_GENERIC_NAME to META_APP_NAME if not specified explicitely @@ -527,8 +533,8 @@ if (LIB_SUFFIX_64 AND CMAKE_SIZEOF_VOID_P MATCHES "8") elseif (LIB_SUFFIX_32 AND CMAKE_SIZEOF_VOID_P MATCHES "4") set(SELECTED_LIB_SUFFIX "${LIB_SUFFIX_32}") endif () -set(BIN_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/bin") -set(LIB_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${SELECTED_LIB_SUFFIX}") +set(BIN_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}") +set(LIB_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}${SELECTED_LIB_SUFFIX}") # allow user to specify additional libraries to link against (see buildvariables.md for details) set(USER_DEFINED_ADDITIONAL_LIBRARIES diff --git a/cmake/modules/LibraryTarget.cmake b/cmake/modules/LibraryTarget.cmake index 1a2ed46..b478585 100644 --- a/cmake/modules/LibraryTarget.cmake +++ b/cmake/modules/LibraryTarget.cmake @@ -25,7 +25,7 @@ include(CMakePackageConfigHelpers) include(TemplateFinder) # set install destination for the CMake modules, config files and header files -set(INCLUDE_SUBDIR "include") +set(INCLUDE_SUBDIR "${CMAKE_INSTALL_INCLUDEDIR}") if (META_CONFIG_SUFFIX) set(INCLUDE_SUBDIR "${INCLUDE_SUBDIR}/${META_PROJECT_NAME}${META_CONFIG_SUFFIX}") endif () @@ -99,6 +99,9 @@ else () # use the project folder itself set(TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/..") endif () +if (META_PROJECT_NAME STREQUAL reflective_rapidjson) + message(STATUS "TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE: ${TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE}") +endif () # add target for building the library if (BUILD_SHARED_LIBS) @@ -378,7 +381,7 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS) if (PC_FILES) install( FILES ${PC_FILES} - DESTINATION "lib${SELECTED_LIB_SUFFIX}/pkgconfig" + DESTINATION "${CMAKE_INSTALL_LIBDIR}${SELECTED_LIB_SUFFIX}/pkgconfig" COMPONENT pkg-config) endif () if (NOT TARGET install-pkg-config) @@ -420,7 +423,7 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS) endif () endif () if (NOT LIBRARY_DESTINATION) - set(LIBRARY_DESTINATION lib${SELECTED_LIB_SUFFIX}/qt/plugins) + set(LIBRARY_DESTINATION ${CMAKE_INSTALL_LIBDIR}${SELECTED_LIB_SUFFIX}/qt/plugins) message( WARNING "Unable to detect appropriate install directory for Qt plugins (assuming \"${LIBRARY_DESTINATION}\"). Set QT_PLUGIN_DIR to specify the directory to install Qt plugins to manually." @@ -431,7 +434,7 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS) set(LIBRARY_DESTINATION ${LIBRARY_DESTINATION}/${META_PLUGIN_CATEGORY}) endif () else () - set(LIBRARY_DESTINATION lib${SELECTED_LIB_SUFFIX}) + set(LIBRARY_DESTINATION ${CMAKE_INSTALL_LIBDIR}${SELECTED_LIB_SUFFIX}) endif () # add install targets and export targets @@ -445,7 +448,7 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS) install( TARGETS ${TARGETS_TO_EXPORT} EXPORT "${META_PROJECT_NAME}${META_CONFIG_SUFFIX}Targets" - RUNTIME DESTINATION bin COMPONENT binary + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT binary LIBRARY DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary ARCHIVE DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary) add_dependencies(install-binary "${META_TARGET_NAME}")