From 65d9552859b17e6f0c87f01b81481b6816877605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Guimar=C3=A3es?= Date: Wed, 26 Jul 2023 11:21:46 +0200 Subject: [PATCH] Add pc files upon installation (#214) (#222) * Add pc files upon installation * Avoid hardcoded paths --- CMakeLists.txt | 31 +++++++++++++++++++++++++++++-- PackageConfig.cmake.in | 28 ++++++++++++++++++++++++++++ zenohpico.pc.in | 8 ++++++++ 3 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 PackageConfig.cmake.in create mode 100644 zenohpico.pc.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c1a4c475..88e7dd133 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,9 @@ # cmake_minimum_required(VERSION 3.8) -project(libzenohpico VERSION 0.10.0.0 LANGUAGES C) +project(zenohpico VERSION 0.10.0.0 LANGUAGES C) + +include(CMakePackageConfigHelpers) option(BUILD_SHARED_LIBS "Build shared libraries if ON, otherwise build static libraries" ON) option(ZENOH_DEBUG "Use this to set the ZENOH_DEBUG variable." 0) @@ -217,6 +219,31 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/zenoh-pico COMPONENT Headers ) +set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/zenohpico") +# Generate Config.cmake +configure_package_config_file( + "PackageConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/zenohpicoConfig.cmake" + INSTALL_DESTINATION "${CMAKE_INSTALL_CMAKEDIR}") + +# Generate Version.cmake +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/zenohpicoConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion) + +install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/zenohpicoConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/zenohpicoConfigVersion.cmake" + DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" + CONFIGURATIONS ${configurations} + COMPONENT dev) + +if(UNIX) + configure_file("${CMAKE_SOURCE_DIR}/zenohpico.pc.in" "${CMAKE_SOURCE_DIR}/zenohpico.pc" @ONLY) + install(FILES "${CMAKE_SOURCE_DIR}/zenohpico.pc" CONFIGURATIONS Release RelWithDebInfo DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") +endif() + if(BUILD_EXAMPLES) add_subdirectory(examples) endif() @@ -363,4 +390,4 @@ if(PACKAGING) include(CPack) endif() -endif() +endif() \ No newline at end of file diff --git a/PackageConfig.cmake.in b/PackageConfig.cmake.in new file mode 100644 index 000000000..7ac56c378 --- /dev/null +++ b/PackageConfig.cmake.in @@ -0,0 +1,28 @@ +# +# Copyright (c) 2023 ZettaScale Technology. +# +# This program and the accompanying materials are made available under the +# terms of the Eclipse Public License 2.0 which is available at +# http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 +# which is available at https://www.apache.org/licenses/LICENSE-2.0. +# +# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 +# +# Contributors: +# ZettaScale Zenoh team, +# + +@PACKAGE_INIT@ + +add_library(__zenohpico_static STATIC IMPORTED GLOBAL) +add_library(zenohpico::static ALIAS __zenohpico_static) +set_property(TARGET __zenohpico_static PROPERTY IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/@STATICLIB@") + +add_library(__zenohpico_lib SHARED IMPORTED GLOBAL) +add_library(zenohpico::lib ALIAS __zenohpico_lib) +set_target_properties(__zenohpico_lib PROPERTIES IMPORTED_NO_SONAME TRUE) +set_property(TARGET __zenohpico_lib PROPERTY IMPORTED_LOCATION "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/@DYLIB@") +if(NOT ("@IMPLIB@" STREQUAL "")) + set_property(TARGET __zenohpico_lib PROPERTY IMPORTED_IMPLIB "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@/@IMPLIB@") +endif() +target_include_directories(__zenohpico_lib INTERFACE "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@") diff --git a/zenohpico.pc.in b/zenohpico.pc.in new file mode 100644 index 000000000..95b80270f --- /dev/null +++ b/zenohpico.pc.in @@ -0,0 +1,8 @@ +prefix=@CMAKE_INSTALL_PREFIX@ + +Name: @PROJECT_NAME@ +Description: @CMAKE_PROJECT_DESCRIPTION@ +URL: @CMAKE_PROJECT_HOMEPAGE_URL@ +Version: @PROJECT_VERSION@ +Cflags: -I${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ +Libs: -L${prefix}/@CMAKE_INSTALL_LIBDIR@ -lzenohpico@LIBNAME_POSTFIX@ \ No newline at end of file