From f47271f4556c6b4fa2f6cd8e50806bb1d7f35237 Mon Sep 17 00:00:00 2001 From: Max Bruckner Date: Tue, 6 Feb 2018 11:24:03 +0100 Subject: [PATCH] Fix pkgconfig and installation. Thanks @zeerd for reporting CMAKE_INSTALL_FULL_... needs to be used. --- CMakeLists.txt | 28 +++++++++++----------------- library_config/cJSONConfig.cmake.in | 4 ++-- library_config/libcjson.pc.in | 7 +++---- library_config/libcjson_utils.pc.in | 7 +++---- 4 files changed, 19 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 15e440d..695d8ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -107,12 +107,6 @@ endforeach() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${supported_compiler_flags}") -#variables for pkg-config -set(prefix "${CMAKE_INSTALL_PREFIX}") -set(libdir "${CMAKE_INSTALL_LIBDIR}") -set(version "${PROJECT_VERSION}") -set(includedir "${CMAKE_INSTALL_INCLUDEDIR}") - option(BUILD_SHARED_LIBS "Build shared libraries" ON) option(ENABLE_TARGET_EXPORT "Enable exporting of CMake targets. Disable when it causes problems!" ON) @@ -149,15 +143,15 @@ endif() configure_file("${CMAKE_CURRENT_SOURCE_DIR}/library_config/libcjson.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libcjson.pc" @ONLY) -install(FILES cJSON.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/cjson") -install (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcjson.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") -install(TARGETS "${CJSON_LIB}" DESTINATION "${CMAKE_INSTALL_LIBDIR}" EXPORT "${CJSON_LIB}") +install(FILES cJSON.h DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/cjson") +install (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcjson.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig") +install(TARGETS "${CJSON_LIB}" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}" EXPORT "${CJSON_LIB}") if (BUILD_SHARED_AND_STATIC_LIBS) - install(TARGETS "${CJSON_LIB}-static" DESTINATION "${CMAKE_INSTALL_LIBDIR}") + install(TARGETS "${CJSON_LIB}-static" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}") endif() if(ENABLE_TARGET_EXPORT) # export library information for CMake projects - install(EXPORT "${CJSON_LIB}" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cJSON") + install(EXPORT "${CJSON_LIB}" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cmake/cJSON") endif() set_target_properties("${CJSON_LIB}" @@ -188,15 +182,15 @@ if(ENABLE_CJSON_UTILS) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/library_config/libcjson_utils.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libcjson_utils.pc" @ONLY) - install(TARGETS "${CJSON_UTILS_LIB}" DESTINATION "${CMAKE_INSTALL_LIBDIR}" EXPORT "${CJSON_UTILS_LIB}") + install(TARGETS "${CJSON_UTILS_LIB}" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}" EXPORT "${CJSON_UTILS_LIB}") if (BUILD_SHARED_AND_STATIC_LIBS) - install(TARGETS "${CJSON_UTILS_LIB}-static" DESTINATION "${CMAKE_INSTALL_LIBDIR}") + install(TARGETS "${CJSON_UTILS_LIB}-static" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}") endif() - install(FILES cJSON_Utils.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/cjson") - install (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcjson_utils.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + install(FILES cJSON_Utils.h DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}/cjson") + install (FILES "${CMAKE_CURRENT_BINARY_DIR}/libcjson_utils.pc" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig") if(ENABLE_TARGET_EXPORT) # export library information for CMake projects - install(EXPORT "${CJSON_UTILS_LIB}" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cJSON") + install(EXPORT "${CJSON_UTILS_LIB}" DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cmake/cJSON") endif() set_target_properties("${CJSON_UTILS_LIB}" @@ -216,7 +210,7 @@ configure_file( # Install package config files install(FILES ${PROJECT_BINARY_DIR}/cJSONConfig.cmake ${PROJECT_BINARY_DIR}/cJSONConfigVersion.cmake - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cJSON") + DESTINATION "${CMAKE_INSTALL_FULL_LIBDIR}/cmake/cJSON") option(ENABLE_CJSON_TEST "Enable building cJSON test" ON) if(ENABLE_CJSON_TEST) diff --git a/library_config/cJSONConfig.cmake.in b/library_config/cJSONConfig.cmake.in index 67e8325..909f7a9 100644 --- a/library_config/cJSONConfig.cmake.in +++ b/library_config/cJSONConfig.cmake.in @@ -2,8 +2,8 @@ set(CJSON_UTILS_FOUND @ENABLE_CJSON_UTILS@) # The include directories used by cJSON -set(CJSON_INCLUDE_DIRS "@prefix@/@includedir@") -set(CJSON_INCLUDE_DIR "@prefix@/@includedir@") +set(CJSON_INCLUDE_DIRS "@CMAKE_INSTALL_FULL_INCLUDEDIR@") +set(CJSON_INCLUDE_DIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@") get_filename_component(_dir "${CMAKE_CURRENT_LIST_FILE}" PATH) diff --git a/library_config/libcjson.pc.in b/library_config/libcjson.pc.in index b3a5b40..7e616bb 100644 --- a/library_config/libcjson.pc.in +++ b/library_config/libcjson.pc.in @@ -1,9 +1,8 @@ -prefix=@prefix@ -libdir=${prefix}/@libdir@ -includedir=${prefix}/@includedir@ +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ Name: libcjson -Version: @version@ +Version: @PROJECT_VERSION@ Description: Ultralightweight JSON parser in ANSI C URL: https://github.com/DaveGamble/cJSON Libs: -L${libdir} -lcjson diff --git a/library_config/libcjson_utils.pc.in b/library_config/libcjson_utils.pc.in index 174ab60..830259f 100644 --- a/library_config/libcjson_utils.pc.in +++ b/library_config/libcjson_utils.pc.in @@ -1,9 +1,8 @@ -prefix=@prefix@ -libdir=${prefix}/@libdir@ -includedir=${prefix}/@includedir@ +libdir=@CMAKE_INSTALL_FULL_LIBDIR@ +includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ Name: libcjson_utils -Version: @version@ +Version: @PROJECT_VERSION@ Description: An implementation of JSON Pointer, Patch and Merge Patch based on cJSON. URL: https://github.com/DaveGamble/cJSON Libs: -L${libdir} -lcjson_utils