From 457ea4af21f2d382009734e0217193d2807969de Mon Sep 17 00:00:00 2001 From: cen1 Date: Fri, 18 Apr 2025 23:14:56 +0200 Subject: [PATCH] add cmake install targets, document usage of find_package, fix rpm license field --- CMake/bncsutilConfig.cmake.in | 7 ++++++ CMakeLists.txt | 47 +++++++++++++++++++++++++++++------ README.md | 6 +++++ 3 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 CMake/bncsutilConfig.cmake.in diff --git a/CMake/bncsutilConfig.cmake.in b/CMake/bncsutilConfig.cmake.in new file mode 100644 index 0000000..086f338 --- /dev/null +++ b/CMake/bncsutilConfig.cmake.in @@ -0,0 +1,7 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/bncsutilTargets.cmake") + +set(bncsutil_FOUND TRUE) +set(bncsutil_VERSION "@PROJECT_VERSION@") +message(STATUS "Found bncsutil: ${bncsutil_VERSION}") \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 5830a5a..6af6f35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,13 @@ cmake_minimum_required(VERSION 3.25) -project(bncsutil) +SET(VERSION_MAJOR "1") +SET(VERSION_MINOR "4") +SET(VERSION_PATCH "3") + +project(bncsutil VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR} "${PROJECT_SOURCE_DIR}/CMake/Modules") message(${CMAKE_BINARY_DIR}) -SET(VERSION_MAJOR "1") -SET(VERSION_MINOR "4") -SET(VERSION_PATCH "2") - add_library(bncsutil SHARED) set(HEADERS @@ -97,9 +97,42 @@ if (MSVC) set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT "bncsutil") endif() -install(TARGETS bncsutil RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) +include(CMakePackageConfigHelpers) + +install(TARGETS bncsutil + EXPORT bncsutilTargets + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + INCLUDES DESTINATION include +) + install(FILES ${HEADERS} DESTINATION include/bncsutil) +install(EXPORT bncsutilTargets + FILE bncsutilTargets.cmake + NAMESPACE bncsutil:: + DESTINATION lib/cmake/bncsutil +) + +configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/CMake/bncsutilConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/bncsutilConfig.cmake" + INSTALL_DESTINATION lib/cmake/bncsutil +) + +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/bncsutilConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion +) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/bncsutilConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/bncsutilConfigVersion.cmake" + DESTINATION lib/cmake/bncsutil +) + #CPack configuration SET(CPACK_GENERATOR "DEB" "RPM") SET(CPACK_PACKAGE_NAME "bncsutil") @@ -124,7 +157,7 @@ SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libgmp10") #RPM configuration SET(CPACK_RPM_PACKAGE_RELEASE 1) -SET(CPACK_RPM_PACKAGE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING") +SET(CPACK_RPM_PACKAGE_LICENSE "LGPL-2.1") SET(CPACK_RPM_PACKAGE_GROUP "bncsutil") SET(CPACK_RPM_PACKAGE_URL "https://github.com/BNETDocs/bncsutil") SET(CPACK_RPM_PACKAGE_REQUIRES "gmp") diff --git a/README.md b/README.md index 1d78ffa..d236979 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,12 @@ been maintained over the course of several years by the open source Battle.net c # Usage `#include ` and link against `bncsutil.lib` or `libbncsutil.so`. +For CMake add: +``` +find_package(bncsutil REQUIRED) +target_link_libraries(mytarget PRIVATE bncsutil::bncsutil) +``` + # Building To force a specific build (32bit or 64bit) add `-DCMAKE_GENERATOR_PLATFORM=x86` or `-DCMAKE_GENERATOR_PLATFORM=x64` to CMake flags.