Use GNUInstallDirs

See https://github.com/Martchus/cpp-utilities/issues/17
This commit is contained in:
Martchus 2020-02-01 00:01:21 +01:00
parent eadb261c56
commit c97dfbfd4c
3 changed files with 24 additions and 15 deletions

View File

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

View File

@ -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

View File

@ -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}")