Added rudimentary package configuration files.

These files will allow cmake based projects to find the
library using find_package(cJSON). If successful, they can
use CJSON_LIBRARIES and CJSON_INCLUDE_DIRS.

Other build systems can use a similar approach to pkg-config:
cmake --find-package -DNAME=cJSON -DCOMPILER_ID=GNU -DLANGUAGE=C  -DCMAKE_PREFIX_PATH=<path-to-non-sytem-installation-path> -DMODE=LINK

or with MODE COMPILE or EXISTS.
This commit is contained in:
Markus Blatt 2016-11-04 19:59:04 +01:00 committed by Max Bruckner
parent 8a7f9a2101
commit 251e5a5e34
3 changed files with 46 additions and 1 deletions

View File

@ -69,7 +69,27 @@ if(ENABLE_CJSON_UTILS)
VERSION "${CJSON_VERSION}")
endif()
option(ENABLE_CJSON_TEST "Enable building cJSON test" ON)
# export library information for CMake projects
export(TARGETS ${CJSON_LIB} ${CJSON_UTILS_LIB}
FILE ${PROJECT_BINARY_DIR}/cJSONConfigTargets.cmake)
# create the other package config files
configure_file(
cJSONConfig.cmake.in
${PROJECT_BINARY_DIR}/cJSONConfig.cmake @ONLY)
configure_file(
cJSONConfigVersion.cmake.in
${PROJECT_BINARY_DIR}/cJSONConfigVersion.cmake @ONLY)
# Install package config files
install(FILES ${PROJECT_BINARY_DIR}/cJSONConfig.cmake
${PROJECT_BINARY_DIR}/cJSONConfigVersion.cmake
${PROJECT_BINARY_DIR}/cJSONConfigTargets.cmake
DESTINATION lib/cmake/cJSON)
option(ENABLE_CJSON_TEST "Enable building cJSON test" OFF)
if(ENABLE_CJSON_TEST)
set(TEST_CJSON cJSON_test)
add_executable("${TEST_CJSON}" test.c)

14
cJSONConfig.cmake.in Normal file
View File

@ -0,0 +1,14 @@
# Whether the utils lib was build.
set(CJSON_UTILS_FOUND @ENABLE_CJSON_UTILS@)
# All cJson libraries (including the utils lib if present
set(CJSON_LIBRARIES @CJSON_UTILS_LIB@ @CJSON_LIB@)
# The cJSON utils library
set(CJSON_UTILS_LIBRARY @CJSON_UTILS_LIB@)
# The cJSON library
set(CJSON_LIBRARY @CJSON_LIB@)
# The include directories used by cJSON
set(CJSON_INCLUDE_DIRS @CMAKE_INSTALL_PREFIX@/include)
get_filename_component(_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
include("${_dir}/cJSONConfigTargets.cmake")

View File

@ -0,0 +1,11 @@
set(PACKAGE_VERSION "@PROJECT_VERSION@")
# Check whether the requested PACKAGE_FIND_VERSION is compatible
if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
set(PACKAGE_VERSION_COMPATIBLE TRUE)
if ("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}")
set(PACKAGE_VERSION_EXACT TRUE)
endif()
endif()