1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
Description: Fix install paths for Debian
This patch
* includes CMakePackageConfigHelpers in src/CMakeLists.txt.
* adds a Config.cmake.in and generates the proper CMake config files before
installing them
* adds a pkg-config file
* patches src/CMakeLists.txt to configure both of the above
* adds a version string to the project
* changes the header install destination to not be hard-coded.
Author: David James <davidjamescastor215@proton.me>
Last-Update: 2024-01-19
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- /dev/null
+++ b/Config.cmake.in
@@ -0,0 +1,4 @@
+@PACKAGE_INIT@
+
+include("${CMAKE_CURRENT_LIST_DIR}/DiscordRPCTargets.cmake")
+check_required_components(@PROJECT_NAME@)
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -121,9 +121,14 @@ endif(CLANG_FORMAT_CMD)
# install
+set_target_properties(discord-rpc PROPERTIES
+ VERSION ${DiscordRPC_VERSION}
+ SOVERSION ${DiscordRPC_VERSION_MAJOR}
+ )
+
install(
TARGETS discord-rpc
- EXPORT "discord-rpc"
+ EXPORT "${PROJECT_NAME}Targets"
RUNTIME
DESTINATION "${CMAKE_INSTALL_BINDIR}"
LIBRARY
@@ -135,8 +140,43 @@ install(
)
install(
+ EXPORT ${PROJECT_NAME}Targets
+ NAMESPACE ${PROJECT_NAME}::
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
+)
+
+install(
FILES
"../include/discord_rpc.h"
"../include/discord_register.h"
- DESTINATION "include"
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+)
+
+include(CMakePackageConfigHelpers)
+
+configure_package_config_file(
+ "${CMAKE_SOURCE_DIR}/Config.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/discord-rpc"
+)
+
+write_basic_package_version_file(
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
+ VERSION ${DiscordRPC_VERSION}
+ COMPATIBILITY SameMajorVersion
+)
+
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
+)
+
+configure_file("${CMAKE_SOURCE_DIR}/${PROJECT_NAME}.pc.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc" @ONLY
+)
+
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
)
+
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
cmake_minimum_required (VERSION 3.2.0)
-project (DiscordRPC)
+project (DiscordRPC VERSION 3.4.0)
include(GNUInstallDirs)
--- /dev/null
+++ b/DiscordRPC.pc.in
@@ -0,0 +1,9 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
+includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
+
+Name: @PROJECT_NAME@
+Description: Library for integrating Discord Rich Presence
+Version: @PROJECT_VERSION@
+Libs: -L${libdir} -ldiscord-rpc
+Cflags: -I${includedir}
\ No newline at end of file
|