Selaa lähdekoodia

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.
Markus Blatt 8 vuotta sitten
vanhempi
commit
251e5a5e34
3 muutettua tiedostoa jossa 46 lisäystä ja 1 poistoa
  1. 21 1
      CMakeLists.txt
  2. 14 0
      cJSONConfig.cmake.in
  3. 11 0
      cJSONConfigVersion.cmake.in

+ 21 - 1
CMakeLists.txt

@@ -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 - 0
cJSONConfig.cmake.in

@@ -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")

+ 11 - 0
cJSONConfigVersion.cmake.in

@@ -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()