FindJsonCpp.cmake
Go to the documentation of this file.
1 find_path(JsonCpp_INCLUDE_DIR "json/json.h"
2  PATH_SUFFIXES "jsoncpp"
3  DOC "jsoncpp include directory")
4 mark_as_advanced(JsonCpp_INCLUDE_DIR)
5 
6 find_library(JsonCpp_LIBRARY
7  NAMES jsoncpp
8  DOC "jsoncpp library")
9 mark_as_advanced(JsonCpp_LIBRARY)
10 
11 if (JsonCpp_INCLUDE_DIR AND EXISTS "${JsonCpp_INCLUDE_DIR}/json/version.h")
12  file(STRINGS "${JsonCpp_INCLUDE_DIR}/json/version.h" _JsonCpp_version_lines
13  REGEX "JSONCPP_VERSION_[A-Z]+")
14  string(REGEX REPLACE ".*# *define +JSONCPP_VERSION_MAJOR +([0-9]+).*" "\\1" _JsonCpp_version_major "${_JsonCpp_version_lines}")
15  string(REGEX REPLACE ".*# *define +JSONCPP_VERSION_MINOR +([0-9]+).*" "\\1" _JsonCpp_version_minor "${_JsonCpp_version_lines}")
16  string(REGEX REPLACE ".*# *define +JSONCPP_VERSION_PATCH +([0-9]+).*" "\\1" _JsonCpp_version_patch "${_JsonCpp_version_lines}")
17  set(JsonCpp_VERSION "${_JsonCpp_version_major}.${_JsonCpp_version_minor}.${_JsonCpp_version_patch}")
18  unset(_JsonCpp_version_major)
19  unset(_JsonCpp_version_minor)
20  unset(_JsonCpp_version_patch)
21  unset(_JsonCpp_version_lines)
22 endif ()
23 
24 include(FindPackageHandleStandardArgs)
25 find_package_handle_standard_args(JsonCpp
26  REQUIRED_VARS JsonCpp_LIBRARY JsonCpp_INCLUDE_DIR
27  VERSION_VAR JsonCpp_VERSION)
28 
29 if (JsonCpp_FOUND)
30  set(JsonCpp_INCLUDE_DIRS "${JsonCpp_INCLUDE_DIR}")
31  set(JsonCpp_LIBRARIES "${JsonCpp_LIBRARY}")
32 
33  if (NOT TARGET JsonCpp::JsonCpp)
34  include(vtkDetectLibraryType)
35  vtk_detect_library_type(jsoncpp_library_type
36  PATH "${JsonCpp_LIBRARY}")
37  add_library(JsonCpp::JsonCpp "${jsoncpp_library_type}" IMPORTED)
38  unset(jsoncpp_library_type)
39  set_target_properties(JsonCpp::JsonCpp PROPERTIES
40  IMPORTED_LOCATION "${JsonCpp_LIBRARY}"
41  IMPORTED_IMPLIB "${JsonCpp_LIBRARY}"
42  INTERFACE_INCLUDE_DIRECTORIES "${JsonCpp_INCLUDE_DIR}")
43  endif ()
44 endif ()
string