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 # add install target for binary
if (APPLE) if (APPLE)
set(BUNDLE_INSTALL_DESTINATION set(BUNDLE_INSTALL_DESTINATION
bin "${CMAKE_INSTALL_BINDIR}"
CACHE STRING "specifies the install destination for bundles") CACHE STRING "specifies the install destination for bundles")
install( install(
TARGETS ${META_TARGET_NAME} TARGETS ${META_TARGET_NAME}
RUNTIME DESTINATION bin RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
BUNDLE DESTINATION "${BUNDLE_INSTALL_DESTINATION}" COMPONENT binary) BUNDLE DESTINATION "${BUNDLE_INSTALL_DESTINATION}" COMPONENT binary)
elseif (ANDROID) elseif (ANDROID)
install( install(
TARGETS ${META_TARGET_NAME} TARGETS ${META_TARGET_NAME}
RUNTIME DESTINATION bin COMPONENT binary RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT binary
LIBRARY DESTINATION lib${SELECTED_LIB_SUFFIX} COMPONENT binary LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}${SELECTED_LIB_SUFFIX}" COMPONENT binary
ARCHIVE DESTINATION lib${SELECTED_LIB_SUFFIX} COMPONENT binary) ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}${SELECTED_LIB_SUFFIX}" COMPONENT binary)
else () else ()
install(TARGETS ${META_TARGET_NAME} RUNTIME DESTINATION bin COMPONENT binary) install(TARGETS ${META_TARGET_NAME} RUNTIME DESTINATION bin COMPONENT binary)
endif () endif ()
@ -228,7 +228,7 @@ function (add_custom_desktop_file)
# add install for the desktop file # add install for the desktop file
install( install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/resources/${ARGS_FILE_NAME}.desktop" FILES "${CMAKE_CURRENT_BINARY_DIR}/resources/${ARGS_FILE_NAME}.desktop"
DESTINATION "share/applications" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications"
COMPONENT desktop) COMPONENT desktop)
endfunction () endfunction ()
@ -278,7 +278,7 @@ function (add_desktop_file)
# add install for the appstream file # add install for the appstream file
install( install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/resources/${META_ID}.appdata.xml" FILES "${CMAKE_CURRENT_BINARY_DIR}/resources/${META_ID}.appdata.xml"
DESTINATION "share/metainfo" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo"
COMPONENT appimage) COMPONENT appimage)
endfunction () endfunction ()

View File

@ -69,9 +69,15 @@ elseif (CONFIGURATION_TARGET_SUFFIX)
set(TARGET_SUFFIX "-${CONFIGURATION_TARGET_SUFFIX}") set(TARGET_SUFFIX "-${CONFIGURATION_TARGET_SUFFIX}")
endif () 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 # define a few variables
set(META_TARGET_NAME "${TARGET_PREFIX}${META_PROJECT_NAME}${TARGET_SUFFIX}") 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) string(TOUPPER "${CMAKE_BUILD_TYPE}" META_CURRENT_CONFIGURATION)
# set META_GENERIC_NAME to META_APP_NAME if not specified explicitely # 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") elseif (LIB_SUFFIX_32 AND CMAKE_SIZEOF_VOID_P MATCHES "4")
set(SELECTED_LIB_SUFFIX "${LIB_SUFFIX_32}") set(SELECTED_LIB_SUFFIX "${LIB_SUFFIX_32}")
endif () endif ()
set(BIN_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/bin") set(BIN_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}")
set(LIB_INSTALL_DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${SELECTED_LIB_SUFFIX}") 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) # allow user to specify additional libraries to link against (see buildvariables.md for details)
set(USER_DEFINED_ADDITIONAL_LIBRARIES set(USER_DEFINED_ADDITIONAL_LIBRARIES

View File

@ -25,7 +25,7 @@ include(CMakePackageConfigHelpers)
include(TemplateFinder) include(TemplateFinder)
# set install destination for the CMake modules, config files and header files # 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) if (META_CONFIG_SUFFIX)
set(INCLUDE_SUBDIR "${INCLUDE_SUBDIR}/${META_PROJECT_NAME}${META_CONFIG_SUFFIX}") set(INCLUDE_SUBDIR "${INCLUDE_SUBDIR}/${META_PROJECT_NAME}${META_CONFIG_SUFFIX}")
endif () endif ()
@ -99,6 +99,9 @@ else ()
# use the project folder itself # use the project folder itself
set(TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/..") set(TARGET_INCLUDE_DIRECTORY_BUILD_INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/..")
endif () 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 # add target for building the library
if (BUILD_SHARED_LIBS) if (BUILD_SHARED_LIBS)
@ -378,7 +381,7 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
if (PC_FILES) if (PC_FILES)
install( install(
FILES ${PC_FILES} FILES ${PC_FILES}
DESTINATION "lib${SELECTED_LIB_SUFFIX}/pkgconfig" DESTINATION "${CMAKE_INSTALL_LIBDIR}${SELECTED_LIB_SUFFIX}/pkgconfig"
COMPONENT pkg-config) COMPONENT pkg-config)
endif () endif ()
if (NOT TARGET install-pkg-config) if (NOT TARGET install-pkg-config)
@ -420,7 +423,7 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
endif () endif ()
endif () endif ()
if (NOT LIBRARY_DESTINATION) 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( message(
WARNING 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." "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}) set(LIBRARY_DESTINATION ${LIBRARY_DESTINATION}/${META_PLUGIN_CATEGORY})
endif () endif ()
else () else ()
set(LIBRARY_DESTINATION lib${SELECTED_LIB_SUFFIX}) set(LIBRARY_DESTINATION ${CMAKE_INSTALL_LIBDIR}${SELECTED_LIB_SUFFIX})
endif () endif ()
# add install targets and export targets # add install targets and export targets
@ -445,7 +448,7 @@ if (NOT META_NO_INSTALL_TARGETS AND ENABLE_INSTALL_TARGETS)
install( install(
TARGETS ${TARGETS_TO_EXPORT} TARGETS ${TARGETS_TO_EXPORT}
EXPORT "${META_PROJECT_NAME}${META_CONFIG_SUFFIX}Targets" 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 LIBRARY DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary
ARCHIVE DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary) ARCHIVE DESTINATION ${LIBRARY_DESTINATION} COMPONENT binary)
add_dependencies(install-binary "${META_TARGET_NAME}") add_dependencies(install-binary "${META_TARGET_NAME}")